O Spanner fornece tabelas integradas que registram as estatísticas de operações de leitura (ou consulta), gravação e exclusão das tabelas (incluindo tabelas de fluxos de mudanças) e índices. Com as estatísticas de operações de tabela, é possível fazer o seguinte:
Identifique tabelas com aumento do tráfego de gravação correspondente ao aumento do armazenamento.
Identifique tabelas com tráfego de leitura, gravação e exclusão inesperado.
Identifique as tabelas mais usadas.
Quando você consulta ou grava em uma tabela, a contagem de operações correspondentes para a tabela aumenta em 1, independentemente do número de linhas acessadas.
As métricas gerais de operações por segundo de um banco de dados podem ser monitoradas com
Operations per second
, Operations per second by API method
e outras
métricas relacionadas nos gráficos
Insights do sistema.
Disponibilidade
O Spanner fornece as estatísticas de operações de tabela no
esquema SPANNER_SYS
. 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
.
Estatísticas das operações de tabela
As tabelas a seguir rastreiam as estatísticas de leitura (ou consulta), gravação e exclusão nas suas tabelas e índices durante um período específico:
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE
: operações durante intervalos de 1 minutoSPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: operações durante intervalos de 10 minutosSPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR
: operações durante intervalos de 1 hora
Essas tabelas têm as seguintes propriedades:
Cada uma contém dados para intervalos de tempo não sobrepostos do comprimento que o nome da tabela especifica.
Os intervalos são baseados em horas. Os intervalos de 1 minuto começam no minuto, os de 10 minutos começam a cada 10 minutos, começando na hora, e os intervalos de 1 hora começam na hora.
Por exemplo, às 11:59:30, os intervalos mais recentes disponíveis para as consultas SQL são:
- 1 minuto: 11:58:00–11:58:59
- 10 minutos: 11:40:00–11:49:59
- 1 hora: 10:00:00–10:59:59
Esquema para todas as tabelas de estatísticas de operações 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. |
READ_QUERY_COUNT |
INT64 |
Número de consultas ou leituras da tabela. |
WRITE_COUNT |
INT64 |
Número de consultas gravadas na tabela. |
DELETE_COUNT |
INT64 |
Número de consultas que executam exclusões na tabela. |
Se você inserir dados no banco de dados usando mutações, o write_count
vai aumentar em 1 para cada tabela acessada pela instrução de inserção. Além disso,
uma consulta que acessa um índice, sem verificar a tabela subjacente, só
incrementa o read_query_count
no índice.
Retenção de dados
O Spanner mantém dados para cada tabela, no mínimo, pelos períodos a seguir:
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE
: intervalos que abrangem as seis horas anteriores.SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: intervalos que abrangem os quatro dias anteriores.SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR
: intervalos que abrangem os últimos 30 dias.
Exemplo de consultas
Esta seção inclui vários exemplos de instruções SQL que recuperam estatísticas agregadas das operações de tabela. É possível executar essas instruções SQL usando as bibliotecas de cliente ou o gcloud spanner.
Consultar as tabelas e os índices com mais operações de gravação no intervalo mais recente
SELECT interval_end, table_name, write_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY write_count DESC;
Consultar as tabelas e os índices com mais operações de exclusão no intervalo mais recente
SELECT interval_end, table_name, delete_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY delete_count DESC;
Consultar as tabelas e os índices com as operações de leitura e consulta mais frequentes no intervalo mais recente
SELECT interval_end, table_name, read_query_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY read_query_count DESC;
Consultar o uso de uma tabela nas últimas 6 horas
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_minute WHERE table_name = table_name ORDER BY interval_end DESC;
Em que:
table_name
precisa ser uma tabela ou índice existente no banco de dados.
Consultar o uso de uma tabela nos últimos 14 dias
GoogleSQL
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) 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.
Consultar as tabelas e os índices sem uso nas últimas 24 horas
GoogleSQL
(SELECT t.table_name FROM information_schema.tables AS t WHERE t.table_catalog = "" AND t.table_schema = "" AND t.table_type = "BASE TABLE" UNION ALL SELECT cs.change_stream_name FROM information_schema.change_streams cs WHERE cs.change_stream_catalog = "" AND cs.change_stream_schema = "" UNION ALL SELECT idx.index_name FROM information_schema.indexes idx WHERE idx.index_type = "INDEX" AND idx.table_catalog = "" AND idx.table_schema = "") EXCEPT ALL (SELECT DISTINCT(table_name) FROM spanner_sys.table_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));
A seguir
Use as Estatísticas de tamanhos de tabela para determinar os tamanhos das tabelas e dos índices.
Saiba mais sobre outras ferramentas de introspecção.
Saiba mais sobre as práticas recomendadas de SQL para o Spanner.