Estatísticas de tamanhos de tabelas

O Spanner fornece as seguintes tabelas incorporadas:

  • SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: lista os tamanhos das tabelas e dos índices nas bases de dados.
  • SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: apresenta os tamanhos das suas tabelas e índices nas bases de dados de cada grupo de localidades.

O tamanho da tabela está em bytes. Os tamanhos das tabelas incluem versões de dados. Pode usar estas tabelas incorporadas para monitorizar os tamanhos das tabelas e dos índices ao longo do tempo. Também pode monitorizar os tamanhos dos seus índices à medida que os cria, elimina e modifica (à medida que insere mais linhas no índice ou quando lhe adiciona novas colunas). Além disso, também pode consultar os tamanhos das tabelas do fluxo de alterações.

O armazenamento da base de dados pode ser monitorizado com a métrica de armazenamento total da base de dados. Pode ver a discriminação do armazenamento da base de dados com SPANNER_SYS.TABLE_SIZES_STATS_1HOUR e SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.

Aceda às estatísticas de tamanhos das tabelas

O Spanner fornece as estatísticas de tamanhos das tabelas no esquema SPANNER_SYS. Pode usar as seguintes formas para aceder aos dados do SPANNER_SYS:

  • A página do Spanner Studio de uma base de dados na Google Cloud consola.

  • O comando gcloud spanner databases execute-sql.

  • O método executeSql ou o método executeStreamingSql.

Os seguintes métodos de leitura única fornecidos pelo Spanner não suportam o SPANNER_SYS:

  • Executar uma leitura forte a partir de uma única linha ou de várias linhas numa tabela.
  • Executar uma leitura desatualizada de uma única linha ou várias linhas numa tabela.
  • Leitura de uma única linha ou várias linhas num índice secundário.

TABLE_SIZES_STATS_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_1HOUR contém os tamanhos de todas as tabelas na sua base de dados, ordenados por interval_end. Os intervalos baseiam-se nas horas do relógio e terminam à hora exata. Internamente, a cada 5 minutos, o Spanner recolhe dados de todos os servidores e, em seguida, disponibiliza os dados na tabela TABLE_SIZES_STATS_1HOUR pouco depois. Os dados são, em seguida, calculados em média por cada hora. Por exemplo, às 11:59:30, TABLE_SIZES_STATS_1HOUR mostra os tamanhos médios das tabelas do intervalo das 10:00:00 às 10:59:59.

Esquema da tabela

Nome da coluna Tipo Descrição
INTERVAL_END TIMESTAMP Fim do intervalo de tempo em que os tamanhos das tabelas foram recolhidos.
TABLE_NAME STRING Nome da tabela ou do índice.
USED_BYTES FLOAT64 Tamanho da tabela em bytes.
USED_SSD_BYTES FLOAT64 Armazenamento SSD usado pela tabela em bytes.
USED_HDD_BYTES FLOAT64 Armazenamento de HDD usado pela tabela em bytes.

Consultas de exemplo

Esta secção inclui vários exemplos de declarações SQL que obtêm estatísticas agregadas de tamanhos de tabelas. Pode executar estas declarações SQL através das bibliotecas de cliente, do gcloud spanner ou da Google Cloud consola.

Consultar as 4 maiores tabelas e índices para o intervalo mais recente

A consulta seguinte devolve as 4 tabelas e índices maiores para o intervalo mais recente:

    SELECT interval_end,
          table_name,
          used_bytes
    FROM spanner_sys.table_sizes_stats_1hour
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_sizes_stats_1hour)
    ORDER BY used_bytes DESC
    LIMIT 4;
  

Resultado da consulta
interval_end table_name used_bytes
2022-11-15 13:00:00-07:00 order_item 60495552
2022-11-15 13:00:00-07:00 orders 13350000
2022-11-15 13:00:00-07:00 item_inventory 2094549
2022-11-15 13:00:00-07:00 customer 870000

Tendência do tamanho da consulta para uma tabela ou um índice específico durante as últimas 24 horas

A seguinte consulta devolve o tamanho da tabela nas últimas 24 horas:

GoogleSQL

SELECT interval_end, used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = "table_name"
ORDER BY interval_end DESC;

Onde:

  • table_name tem de ser uma tabela ou um índice existente na base de dados.

PostgreSQL

SELECT interval_end, used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
  AND table_name = 'table_name'
ORDER BY interval_end DESC;

Onde:

  • table_name tem de ser uma tabela ou um índice existente na base de dados.
Resultado da consulta
interval_end used_bytes
2022-11-15 13:00:00-07:00 13350000
2022-11-15 12:00:00-07:00 13350000
2022-11-15 11:00:00-07:00 13350000
2022-11-15 10:00:00-07:00 13350000
2022-11-15 09:00:00-07:00 13350000
2022-11-15 08:00:00-07:00 12350000
2022-11-15 07:00:00-07:00 12350000
2022-11-15 06:00:00-07:00 12350000
2022-11-15 05:00:00-07:00 11350000
2022-11-15 04:00:00-07:00 11350000
2022-11-15 03:00:00-07:00 11350000
2022-11-15 02:00:00-07:00 11350000
2022-11-15 01:00:00-07:00 11350000
2022-11-15 00:00:00-07:00 10350000
2022-11-14 23:00:00-07:00 10350000
2022-11-14 22:00:00-07:00 10350000
2022-11-14 21:00:00-07:00 10350000
2022-11-14 20:00:00-07:00 10350000
2022-11-14 19:00:00-07:00 10350000
2022-11-14 18:00:00-07:00 10350000
2022-11-14 17:00:00-07:00 10350000
2022-11-14 16:00:00-07:00 10350000
2022-11-14 15:00:00-07:00 10350000
2022-11-14 14:00:00-07:00 10350000
2022-11-14 13:00:00-07:00 10350000

TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR contém os tamanhos de todas as tabelas na sua base de dados, ordenados por interval_end, para cada grupo de localidades. Os intervalos baseiam-se nas horas do relógio e terminam à hora. Internamente, a cada 5 minutos, o Spanner recolhe dados de todos os servidores e, em seguida, disponibiliza os dados na tabela pouco depois.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR Em seguida, é calculada a média dos dados por cada hora. Por exemplo, às 11:59:30, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR mostra os tamanhos médios das tabelas para cada grupo de localidades do intervalo das 10:00:00 às 10:59:59.

Esquema da tabela

Nome da coluna Tipo Descrição
INTERVAL_END TIMESTAMP Fim do intervalo de tempo em que os tamanhos das tabelas foram recolhidos.
TABLE_NAME STRING Nome da tabela ou do índice.
LOCALITY_GROUP STRING Nome do grupo de localidades.
USED_BYTES FLOAT64 Tamanho da tabela em bytes.
USED_SSD_BYTES FLOAT64 Armazenamento SSD usado pela tabela em bytes.
USED_HDD_BYTES FLOAT64 Armazenamento de HDD usado pela tabela em bytes.

Retenção de dados

No mínimo, o Spanner mantém os dados durante SPANNER_SYS.TABLE_SIZES_STATS_1HOUR para intervalos que abrangem os 30 dias anteriores.

O que se segue?