Spanner proporciona tablas integradas que registran estadísticas de operaciones de lectura, consulta y escritura para las columnas de tu tabla. Con las estadísticas de operaciones de columnas, puedes hacer lo siguiente:
Identifica las columnas con tráfico de lectura, escritura y consultas inesperado.
Identifica las columnas que se usan con frecuencia.
Cuando consultas o escribes en una columna, Spanner incrementa en uno el recuento de operaciones correspondiente para esa columna, independientemente de la cantidad de filas a las que se accede.
Puedes supervisar el rendimiento general de una base de datos con métricas que miden las operaciones por segundo, las operaciones por segundo por método de API y otras métricas relacionadas en tus gráficos de System Insights.
Cómo 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
:
La página de Spanner Studio de una base de datos en la consola de Google Cloud
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 son compatibles con 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
Para obtener más información, consulta Métodos de lectura única.
Estadísticas de operaciones de columnas
En las siguientes tablas, se realiza un seguimiento de las estadísticas de lectura, consulta y escritura en tus columnas durante un período específico:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: Operaciones en intervalos de 1 minutoSPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: Operaciones en intervalos de 10 minutosSPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: Operaciones en intervalos de 1 hora
Estas tablas tienen las siguientes propiedades:
Cada tabla contiene datos de intervalos de tiempo no superpuestos de la longitud que se especifica en el nombre de la tabla.
Los intervalos de 1 minuto comienzan en el minuto, los intervalos de 10 minutos comienzan cada 10 minutos a partir de la hora y los intervalos de 1 hora comienzan en la hora.
Por ejemplo, a las 11:59:30 a.m., las consultas de SQL pueden acceder a los siguientes intervalos más recientes:
- 1 minuto: de 11:58:00 a 11:58:59 a.m.
- 10 minutos: de 11:40:00 a 11:49:59 a.m.
- 1 hora: de 10:00:00 a 10:59:59 a.m.
Esquema para todas las tablas de estadísticas de operaciones de columnas
Nombre de la columna | Tipo | Descripción |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Es el final del intervalo en el que se recopilaron las estadísticas de uso de la columna. |
TABLE_NAME |
STRING |
Nombre de la tabla o el índice. |
COLUMN_NAME |
STRING |
Nombre de la columna. |
READ_COUNT |
INT64 |
Cantidad de lecturas de la columna. |
QUERY_COUNT |
INT64 |
Cantidad de consultas que leen la columna. |
WRITE_COUNT |
INT64 |
Es la cantidad de consultas que escriben en la tabla. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
Indica si la recopilación de estadísticas se limitó debido a la presión de la memoria. |
Si insertas datos en tu base de datos con mutaciones, Spanner incrementa WRITE_COUNT
en 1 por cada tabla a la que accede 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
en el índice.
Retención de datos
Como mínimo, Spanner conserva los datos para cada tabla durante los siguientes períodos:
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 varias instrucciones de SQL de ejemplo que recuperan estadísticas agregadas de operaciones de columnas. Puedes ejecutar estas instrucciones de SQL con las bibliotecas cliente o la CLI de Google Cloud.
Consulta las columnas de la tabla con la mayor cantidad de operaciones de escritura para el 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;
Consulta las columnas con la mayor cantidad de operaciones de consulta para el 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 durante 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;
Aquí:
table_name
debe ser una tabla o un índice existente en la base de datos.column_name
debe ser una columna existente en 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;
Aquí:
table_name
debe ser una tabla o un índice existente en la base de datos.column_name
debe ser una columna existente en la tabla.
Consultar el uso de una columna durante 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;
Realiza los siguientes reemplazos:
table_name
: Es el nombre de la tabla o el índice en la base de datos.column_name
: Es el nombre de la columna en 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;
Realiza los siguientes reemplazos:
table_name
: Es el nombre de la tabla o el índice en la base de datos.column_name
: Es el nombre de la columna en la tabla.
¿Qué sigue?
Obtén más información sobre otras tablas de estadísticas integradas.
Obtén más información sobre las prácticas recomendadas de SQL para Spanner.