O Spanner fornece as seguintes tabelas integradas:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: lista os tamanhos das tabelas e dos índices nos bancos de dados.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: lista os tamanhos das tabelas e dos índices nos bancos de dados para cada grupo de localidade.
O tamanho da tabela é em bytes. Os tamanhos das tabelas incluem versões de dados. É possível usar essas tabelas integradas para monitorar os tamanhos de tabelas e índices ao longo do tempo. Também é possível monitorar os tamanhos dos índices à medida que você os cria, exclui e modifica (ao inserir mais linhas no índice ou adicionar novas colunas a ele). Além disso, é possível conferir os tamanhos das tabelas de fluxo de alterações.
O armazenamento do banco de dados pode ser monitorado com a métrica de armazenamento total do banco de dados.
É possível ver 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.
Acessar estatísticas de tamanhos de tabela
O Spanner fornece as estatísticas de tamanhos de tabela no esquema SPANNER_SYS. É possível usar as seguintes maneiras de acessar os dados do SPANNER_SYS:
Uma página do Spanner Studio de banco de dados no console do Google Cloud .
O comando
gcloud spanner databases execute-sql.O método
executeSqlouexecuteStreamingSql.
Os seguintes métodos de leitura única fornecidos pelo Spanner
não são compatíveis com SPANNER_SYS:
- realizar uma leitura forte de uma única linha ou de várias linhas em uma tabela;
- realizar uma leitura desatualizada de uma única linha ou várias linhas em uma tabela;
- ler uma única linha ou várias linhas em um índice secundário.
TABLE_SIZES_STATS_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR contém os tamanhos de todas as tabelas no
banco de dados, classificadas por interval_end. Os intervalos são baseados em horários,
terminando na hora. Internamente, a cada cinco minutos, o Spanner coleta
dados de todos os servidores e os disponibiliza na tabela
TABLE_SIZES_STATS_1HOUR logo em seguida. Em seguida, é calculada a média dos dados
para cada hora do relógio. Por exemplo, às 11h59min30, TABLE_SIZES_STATS_1HOUR
mostra os tamanhos médios das tabelas do intervalo das 10h às 10h59min59.
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 |
Armazenamento baseado em linhas usado por tabela ou índice em bytes. |
USED_SSD_BYTES |
FLOAT64 |
Armazenamento baseado em linha SSD usado por tabela ou índice em bytes. |
USED_HDD_BYTES |
FLOAT64 |
Armazenamento baseado em linha em HDD usado por tabela ou índice em bytes. |
COLUMNAR_USED_BYTES |
FLOAT64 |
Armazenamento em colunas usado pela tabela ou pelo índice em bytes. |
COLUMNAR_USED_SSD_BYTES |
FLOAT64 |
Armazenamento SSD colunar usado pela tabela ou pelo índice em bytes. |
COLUMNAR_USED_HDD_BYTES |
FLOAT64 |
Armazenamento em colunas em HDD usado pela tabela ou pelo índice em bytes. |
COLUMNAR_COVERAGE_RATIO |
FLOAT64 |
A proporção de dados em formato colunar em relação ao total de dados de uma tabela ou índice com a política colunar ativada. Os valores variam
de 0.0 a 1.0. |
COLUMNAR_SSD_COVERAGE_RATIO |
FLOAT64 |
A proporção de dados SSD em formato colunar em relação ao total de dados SSD de uma tabela
ou índice com a política colunar ativada. Os valores variam de
0.0 a 1.0. |
COLUMNAR_HDD_COVERAGE_RATIO |
FLOAT64 |
A proporção de dados de HDD em formato colunar em relação ao total de dados de HDD para uma tabela
ou índice com a política colunar ativada. Os valores variam de
0.0 a 1.0. |
Exemplo de consultas
Esta seção inclui vários exemplos de instruções SQL que recuperam estatísticas de tamanho de tabela agregadas. É possível executar essas instruções SQL usando as bibliotecas de cliente, o gcloud spanner ou o console doGoogle Cloud .
Consultar as quatro maiores tabelas e índices do intervalo mais recente
A consulta a seguir retorna as quatro maiores tabelas e índices do intervalo mais recente:
SELECT interval_end,
table_name,
used_bytes + columnar_used_bytes AS total_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 total_used_bytes DESC
LIMIT 4;
Saída da consulta
| interval_end | table_name | total_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 de tamanho de consulta para 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 + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;
Em que:
table_nameprecisa ser uma tabela ou um índice atual no banco de dados.
PostgreSQL
SELECT interval_end,
used_bytes + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;
Em que:
table_nameprecisa ser uma tabela ou um índice no banco de dados.
Saída da consulta
| interval_end | total_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 |
Consultar o uso do armazenamento colunar e a cobertura no intervalo mais recente
A consulta a seguir retorna o tamanho do armazenamento baseado em linhas, o tamanho do armazenamento colunar e a proporção de cobertura colunar para tabelas e índices no intervalo mais recente:
GoogleSQL
SELECT interval_end,
table_name,
used_bytes,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
PostgreSQL
SELECT interval_end,
table_name,
used_bytes,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
SELECT MAX(interval_end)
FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
Saída da consulta
| interval_end | table_name | used_bytes | columnar_used_bytes | columnar_coverage_ratio |
|---|---|---|---|---|
2022-11-15 13:00:00-07:00 |
order_item |
45371664 |
15123888 |
0.95 |
2022-11-15 13:00:00-07:00 |
orders |
10012500 |
3337500 |
0.85 |
2022-11-15 13:00:00-07:00 |
item_inventory |
2094549 |
0 |
0 |
2022-11-15 13:00:00-07:00 |
customer |
870000 |
0 |
0 |
Consultar o armazenamento colunar e a tendência de cobertura de uma tabela ou índice específico nas últimas 24 horas
A consulta a seguir retorna o tamanho do armazenamento colunar e a proporção de cobertura de uma tabela ou índice específico nas últimas 24 horas:
GoogleSQL
SELECT interval_end,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;
Em que:
table_nameprecisa ser uma tabela ou um índice atual no banco de dados.
PostgreSQL
SELECT interval_end,
columnar_used_bytes,
columnar_coverage_ratio
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;
Em que:
table_nameprecisa ser uma tabela ou um índice no banco de dados.
Saída da consulta
| interval_end | columnar_used_bytes | columnar_coverage_ratio |
|---|---|---|
2022-11-15 13:00:00-07:00 |
3337500 |
0.85 |
2022-11-15 12:00:00-07:00 |
3337500 |
0.85 |
2022-11-15 11:00:00-07:00 |
3140000 |
0.8 |
2022-11-15 10:00:00-07:00 |
2945000 |
0.75 |
2022-11-15 09:00:00-07:00 |
2750000 |
0.7 |
2022-11-15 08:00:00-07:00 |
2355000 |
0.6 |
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 banco de dados, classificadas por interval_end, para cada grupo de
localidade. Os intervalos são baseados em horários, terminando 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, é calculada a média dos dados para cada hora. Por
exemplo, às 11h59min30, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR mostra os
tamanhos médios de tabela para cada grupo de localidade do intervalo de 10h às
10h59min59.
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 em HDD usado pela tabela em bytes. |
Retenção de dados
No mínimo, o Spanner mantém os dados de
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR para intervalos que abrangem os últimos 30
dias.
A seguir
- Saiba mais sobre outras ferramentas de introspecção.
- Saiba mais sobre outras informações que o Spanner armazena para cada banco de dados nas tabelas de esquema de informações do banco de dados.
- Saiba mais sobre as práticas recomendadas de SQL para o Spanner.
- Saiba mais sobre como investigar o uso elevado da CPU.
- Aprenda mais sobre o mecanismo colunar.
- Saiba como monitorar o mecanismo colunar.