Spanner proporciona las siguientes tablas integradas:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: enumera los tamaños de tus tablas y los índices dentro de tus bases de datos.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: enumera los tamaños de tus tablas y de los índices dentro de tus bases de datos para cada grupo de localidad.
El tamaño de la tabla se expresa en bytes. Los tamaños de las tablas incluyen las versiones de los datos. Puedes usar estas tablas integradas para supervisar los tamaños de tus tablas y de tus índices a lo largo del tiempo. También puedes supervisar los tamaños de tus índices a medida que los creas, borras y modificas (cuando insertas más filas en el índice o cuando le agregas columnas nuevas). Además, puedes consultar los tamaños de tus tablas de flujo de cambios.
El almacenamiento de la base de datos se puede supervisar con la métrica de almacenamiento total de la base de datos.
Puedes ver el desglose del almacenamiento de la base de datos con
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR y
SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.
Accede a las estadísticas de los tamaños de las tablas
Spanner proporciona las estadísticas de los tamaños de las tablas en el
esquema SPANNER_SYS. Puedes usar las siguientes formas para acceder a los datos de SPANNER_SYS:
Una página de Spanner Studio de la base de datos en la consola de Google Cloud .
El comando
gcloud spanner databases execute-sql.El método
executeSqloexecuteStreamingSql
Los siguientes métodos de lectura única que proporciona Spanner
no admiten SPANNER_SYS:
- Realizar una lectura sólida desde una o varias filas de una tabla
- Realizar una lectura inactiva desde una o varias filas en una tabla
- Leer desde una o varias filas en un índice secundario
TABLE_SIZES_STATS_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR contiene los tamaños de todas las tablas de
tu base de datos, ordenados por interval_end. Los intervalos se basan en las horas del reloj,
que terminan en punto. De forma interna, cada 5 minutos, Spanner recopila
datos de todos los servidores y, luego, los pone a disposición en la
tabla TABLE_SIZES_STATS_1HOUR poco después. Luego, se calcula el promedio de los datos
por cada hora del reloj. Por ejemplo, a las 11:59:30 a.m., TABLE_SIZES_STATS_1HOUR
muestra los tamaños promedio de las tablas del intervalo de 10:00:00 a.m. a 10:59:59 a.m.
Esquema de la tabla
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Es el final del intervalo de tiempo en el que se recopilaron los tamaños de las tablas. |
TABLE_NAME |
STRING |
Es el nombre de la tabla o del índice. |
USED_BYTES |
FLOAT64 |
Es el almacenamiento basado en filas que usa la tabla o el índice en bytes. |
USED_SSD_BYTES |
FLOAT64 |
Es el almacenamiento basado en filas de SSD que usa la tabla o el índice en bytes. |
USED_HDD_BYTES |
FLOAT64 |
Es el almacenamiento basado en filas de HDD que usa la tabla o el índice en bytes. |
COLUMNAR_USED_BYTES |
FLOAT64 |
Es el almacenamiento en columnas que usa la tabla o el índice en bytes. |
COLUMNAR_USED_SSD_BYTES |
FLOAT64 |
Es el almacenamiento SSD en columnas que usa la tabla o el índice en bytes. |
COLUMNAR_USED_HDD_BYTES |
FLOAT64 |
Es el almacenamiento en columnas en HDD que usa la tabla o el índice, en bytes. |
COLUMNAR_COVERAGE_RATIO |
FLOAT64 |
Es la proporción de datos con
formato de columnas respecto de los datos totales
de una tabla o un índice con la política de columnas habilitada. Los valores varían
de 0.0 a 1.0. |
COLUMNAR_SSD_COVERAGE_RATIO |
FLOAT64 |
Es la proporción de datos de SSD con formato de columnas respecto de los datos de SSD totales de una tabla
o un índice con la política de columnas habilitada. Los valores varían de 0.0 a 1.0. |
COLUMNAR_HDD_COVERAGE_RATIO |
FLOAT64 |
Es la proporción de datos de HDD con formato de columnas respecto de los datos de HDD totales de una tabla
o un índice con la política de columnas habilitada. Los valores varían de 0.0 a 1.0. |
Consultas de ejemplo
En esta sección, se incluyen varias sentencias de SQL de ejemplo que recuperan estadísticas de tamaños de tablas agregados. Puedes ejecutar estas sentencias de SQL con las bibliotecas cliente, gcloud spanner o la consola deGoogle Cloud .
Consulta las 4 tablas y los índices más grandes del intervalo más reciente
La siguiente consulta devuelve las 4 tablas y los índices más grandes para el intervalo más reciente:
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;
Resultado de la 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 |
Tendencia del tamaño de las consultas de una tabla o un índice específicos durante las últimas 24 horas
La siguiente consulta devuelve el tamaño de la tabla durante las ú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;
Aquí:
table_namedebe ser una tabla o un índice existentes en la base de datos.
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;
Aquí:
table_namedebe ser una tabla o un índice existentes en la base de datos.
Resultado de la 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 |
Consulta el uso y la cobertura del almacenamiento en columnas para el intervalo más reciente
La siguiente consulta muestra el tamaño de almacenamiento basado en filas, el tamaño de almacenamiento en columnas y la proporción de cobertura en columnas para las tablas y los índices en el intervalo más reciente:
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;
Resultado de la 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 |
Consulta el almacenamiento en columnas y la tendencia de cobertura de una tabla o un índice específicos durante las últimas 24 horas
La siguiente consulta devuelve el tamaño del almacenamiento en columnas y la proporción de cobertura de una tabla o un índice específicos durante las ú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;
Aquí:
table_namedebe ser una tabla o un índice existentes en la base de datos.
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;
Aquí:
table_namedebe ser una tabla o un índice existentes en la base de datos.
Resultado de la 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 contiene los tamaños de
todas las tablas de tu base de datos, ordenadas por interval_end, para cada grupo
de localidad. Los intervalos se basan en las horas del reloj y terminan en punto. De forma interna,
cada 5 minutos, Spanner recopila datos de todos los servidores y, luego,
los pone a disposición en la tabla TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
poco después. Luego, se calcula el promedio de los datos por cada hora. Por
ejemplo, a las 11:59:30 a.m., TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR muestra los
tamaños promedio de las tablas para cada grupo de localidad del intervalo de 10:00:00 a.m. a
10:59:59 a.m.
Esquema de la tabla
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
INTERVAL_END |
TIMESTAMP |
Es el final del intervalo de tiempo en el que se recopilaron los tamaños de las tablas. |
TABLE_NAME |
STRING |
Es el nombre de la tabla o del índice. |
LOCALITY_GROUP |
STRING |
Es el nombre del grupo de localidad. |
USED_BYTES |
FLOAT64 |
Es el tamaño de la tabla en bytes. |
USED_SSD_BYTES |
FLOAT64 |
Es el almacenamiento SSD que usa la tabla en bytes. |
USED_HDD_BYTES |
FLOAT64 |
Es el almacenamiento en HDD que usa la tabla, en bytes. |
Retención de datos
Como mínimo, Spanner conserva los datos de
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR durante intervalos que abarcan los 30 días
anteriores.
¿Qué sigue?
- Obtén más información sobre otras herramientas de introspección.
- Obtén más información sobre otros datos que Spanner almacena para cada base de datos en las tablas del esquema de información de la base de datos.
- Obtén más información sobre las prácticas recomendadas para SQL en Spanner.
- Obtén más información para investigar el uso elevado de CPU.
- Obtén más información sobre el motor de columnas.
- Obtén información para supervisar el motor de columnas.