Estatísticas de tamanhos de tabela

O Spanner fornece as seguintes tabelas integradas:

  • SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: lista os tamanhos das tabelas e índices nos bancos de dados.
  • SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: lista os tamanhos das tabelas e índices nos bancos de dados para cada grupo de localidades.

O tamanho da tabela é em bytes. Os tamanhos de tabela incluem versões de dados. É possível usar essas tabelas integradas para monitorar a tabela e os tamanhos de índice ao longo do tempo. Você também pode monitorar os tamanhos dos índices conforme os cria, exclui e modifica, como ao inserir mais linhas no índice ou ao adicionar novas colunas a ele. Além disso, você também pode conferir os tamanhos das suas tabelas de fluxo de mudanças.

O armazenamento do banco de dados pode ser monitorado com a métrica "Armazenamento total do banco de dados". É possível conferir o detalhamento do armazenamento do banco de dados com SPANNER_SYS.TABLE_SIZES_STATS_1HOUR e SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.

Disponibilidade

Os dados de SPANNER_SYS estão disponíveis apenas por interfaces SQL. Exemplo:

  • Página do Spanner Studio de um banco de dados no console do Google Cloud

  • O comando gcloud spanner databases execute-sql

  • A API executeQuery

Outros métodos de leitura única fornecidos pelo Spanner não são compatíveis com SPANNER_SYS.

TABLE_SIZES_STATS_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_1HOUR contém os tamanhos de todas as tabelas no seu banco de dados, classificados por interval_end. Os intervalos são baseados em horários, terminando na hora. Internamente, a cada 5 minutos, o Spanner coleta dados de todos os servidores e os disponibiliza na tabela TABLE_SIZES_STATS_1HOUR logo depois. Em seguida, os dados são calculados em média por hora. Por exemplo, às 11h59min30s, TABLE_SIZES_STATS_1HOUR mostra os tamanhos médios de tabelas do intervalo de 10h00min00s a 10h59min59s.

Esquema de tabela

Nome da coluna Tipo Descrição
INTERVAL_END TIMESTAMP Fim do intervalo de tempo em que os tamanhos das tabelas foram coletados.
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.

Exemplo de consultas

Esta seção inclui vários exemplos de instruções SQL que recuperam estatísticas de tamanhos de tabelas agregadas. É possível executar essas instruções SQL usando as bibliotecas de cliente, o gcloud spanner ou o console do Google Cloud.

Consultar as quatro tabelas e índices mais grandes do intervalo mais recente

A consulta a seguir retorna as quatro 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;
  

Saída 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 de uma tabela ou índice específico nas últimas 24 horas

A consulta a seguir retorna 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;

Em que:

  • table_name precisa ser uma tabela ou um índice no banco 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;

Em que:

  • table_name precisa ser uma tabela ou um índice no banco de dados.
Saída 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 no seu banco de dados, classificadas por interval_end, para cada grupo de localidades. Os intervalos são baseados em horários de relógio e terminam na hora. Internamente, a cada cinco minutos, o Spanner coleta dados de todos os servidores e os disponibiliza na tabela TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR logo em seguida. Em seguida, os dados são calculados em média por hora. Por exemplo, às 11h59min30s, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR mostra os tamanhos médios de tabela para cada grupo de localidades no intervalo de 10h00min00s a 10h59min59s.

Esquema de tabela

Nome da coluna Tipo Descrição
INTERVAL_END TIMESTAMP Fim do intervalo de tempo em que os tamanhos das tabelas foram coletados.
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

O Spanner mantém dados para SPANNER_SYS.TABLE_SIZES_STATS_1HOUR por intervalos que abrangem os últimos 30 dias.

A seguir