Spanner proporciona tablas integradas que registran estadísticas de operaciones de lectura, consulta y escritura de las columnas de tus tablas. Con las estadísticas de operaciones de columnas, puedes hacer lo siguiente:
Identifica las columnas con tráfico de lectura, consulta y escritura inesperado.
Identifica las columnas que se usan con frecuencia.
Cuando consultas o escribes en una columna, Spanner aumenta en uno el recuento de operaciones correspondiente a esa columna, independientemente del número de filas a las que se acceda.
Puedes monitorizar el uso general de una base de datos mediante métricas que miden las operaciones por segundo, las operaciones por segundo por método de API y otras métricas relacionadas en los gráficos de Estadísticas del sistema.
Acceder a las estadísticas de operaciones de columnas
Spanner proporciona las estadísticas de las operaciones de columna en el esquema SPANNER_SYS
. Puedes usar lo siguiente para acceder a los datos de SPANNER_SYS
:
Página de Spanner Studio de una base de datos en la Google Cloud consola
El comando
gcloud spanner databases execute-sql
El método
executeSql
o el métodoexecuteStreamingSql
.
Los siguientes métodos de lectura única que proporciona Spanner no admiten SPANNER_SYS
:
- Realizar una lectura fuerte desde una sola fila o varias filas en una tabla.
- Realizar una lectura inactiva de una sola fila o varias filas en una tabla.
- Leer desde una sola fila o varias filas en un índice secundario.
Para obtener más información, consulta Métodos de lectura única.
Estadísticas de operaciones de columna
En las siguientes tablas se registran las estadísticas de lectura, consulta y escritura de tus columnas durante un periodo específico:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: operaciones durante intervalos de 1 minutoSPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: operaciones durante intervalos de 10 minutosSPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: operaciones durante intervalos de 1 hora
Estas tablas tienen las siguientes propiedades:
Cada tabla contiene datos de intervalos de tiempo no superpuestos de la duración que especifica el nombre de la tabla.
Los intervalos de 1 minuto empiezan en el minuto, los intervalos de 10 minutos empiezan cada 10 minutos a partir de la hora en punto y los intervalos de 1 hora empiezan en la hora en punto.
Por ejemplo, a las 11:59:30, las consultas SQL pueden acceder a los siguientes intervalos más recientes:
- 1 minuto: de 11:58:00 a 11:58:59
- 10 minutos: de 11:40:00 a 11:49:59
- 1 hora: de 10:00:00 a 10:59:59
Esquema de todas las tablas de estadísticas de operaciones de columnas
Nombre de la columna | Tipo | Descripción |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Fin del intervalo de tiempo en el que se recogieron las estadísticas de uso de la columna. |
TABLE_NAME |
STRING |
Nombre de la tabla o del índice. |
COLUMN_NAME |
STRING |
Nombre de la columna. |
READ_COUNT |
INT64 |
Número de lecturas de la columna. |
QUERY_COUNT |
INT64 |
Número de consultas que leen de la columna. |
WRITE_COUNT |
INT64 |
Número de consultas que escriben en la tabla. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
Indica si la recogida de estadísticas se ha limitado debido a la presión de la memoria. |
Si insertas datos en tu base de datos mediante mutaciones, Spanner aumenta el WRITE_COUNT
en 1 por cada tabla a la que acceda la instrucción de inserción. Además, una consulta que accede a un índice sin analizar la tabla subyacente solo incrementa el QUERY_COUNT
del índice.
Conservación de datos
Como mínimo, Spanner conserva los datos de cada tabla durante los siguientes periodos:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: intervalos que abarcan las seis horas anteriores.SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: intervalos que abarcan los cuatro días anteriores.SPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: intervalos que abarcan los 30 días anteriores.
Consultas de ejemplo
En esta sección se incluyen varios ejemplos de instrucciones SQL que obtienen estadísticas de operaciones de columnas agregadas. Puedes ejecutar estas instrucciones SQL con las bibliotecas de cliente o la CLI de Google Cloud.
Consulta las columnas de la tabla con el mayor número de operaciones de escritura del intervalo más reciente
GoogleSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
Consultar las columnas con más operaciones de consulta del intervalo más reciente
GoogleSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
Consultar el uso de una columna en las últimas 6 horas
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Donde:
table_name
debe ser una tabla o un índice que ya exista en la base de datos.column_name
debe ser una columna de la tabla.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Donde:
table_name
debe ser una tabla o un índice que ya exista en la base de datos.column_name
debe ser una columna de la tabla.
Consultar el uso de una columna en los últimos 14 días
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Haz las siguientes sustituciones:
table_name
: nombre de la tabla o del índice de la base de datos.column_name
: nombre de la columna de la tabla.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Haz las siguientes sustituciones:
table_name
: nombre de la tabla o del índice de la base de datos.column_name
: nombre de la columna de la tabla.
Siguientes pasos
Consulta información sobre otras tablas de estadísticas predefinidas.
Consulta más información sobre las prácticas recomendadas de SQL para Spanner.