En esta página se describen las métricas de tiempo de vida (TTL) de Spanner. Para obtener más información, consulta Información sobre TTL.
Métricas
Spanner proporciona información sobre las actividades de TTL en una tabla del sistema que se puede leer con consultas de SQL y como métricas a las que se accede a través de Cloud Monitoring.
La tabla del sistema informa sobre el TTL por tabla de una base de datos, mientras que Cloud Monitoring informa sobre las métricas a nivel de base de datos.
Usar una consulta de SQL
Spanner proporciona una tabla integrada que registra información relacionada con el TTL. La tabla se llama SPANNER_SYS.ROW_DELETION_POLICIES
y tiene el siguiente esquema.
Nombre de la columna | Tipo | Descripción |
---|---|---|
TABLE_NAME | STRING | El nombre de la tabla que contiene esta política de TTL. |
PROCESSED_WATERMARK | TIMESTAMP | Esta política se ha aplicado a todas las filas de la tabla hasta este momento. Es posible que algunas particiones de la tabla se hayan procesado más recientemente, por lo que esta marca de tiempo representa la partición procesada menos recientemente. Normalmente, este proceso tarda 72 horas. |
UNDELETABLE_ROWS | INT64 | Número de filas que no se pueden eliminar mediante la política de TTL. Consulta Filas que no se pueden eliminar para obtener más información. |
MIN_UNDELETABLE_TIMESTAMP | TIMESTAMP | La marca de tiempo más antigua de las filas que no se pueden eliminar que se observó durante el último ciclo de procesamiento. |
La información de la política de eliminación se devuelve por tabla de tu base de datos.
Puede consultar estos datos con una consulta SQL similar a la siguiente:
SELECT TABLE_NAME, UNDELETABLE_ROWS
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0
Solo se puede acceder a las tablas SPANNER_SYS
a través de interfaces SQL. Por ejemplo:
- La página Spanner Studio de la Google Cloud consola
- El comando
gcloud spanner databases execute-sql
- La API de
executeQuery
Otros métodos de lectura única que proporciona Spanner no admiten SPANNER_SYS
.
Usa Cloud Monitoring
Spanner proporciona las siguientes métricas para monitorizar la actividad de TTL a nivel de base de datos:
row_deletion_policy/deleted_rows
es el número de filas eliminadas por la política de TTL.row_deletion_policy/undeletable_rows
es el número de filas que coinciden con la instrucción de eliminación de filas (GoogleSQL) oTTL INTERVAL
(PostgreSQL), pero que no se pueden eliminar. Esto suele ocurrir porque la fila tenía demasiadas filas secundarias, lo que ha provocado que la acción supere el límite de transacciones de Spanner.row_deletion_policy/processed_watermark_age
es el tiempo transcurrido entre ahora y la marca de tiempo de lectura utilizada en el último ciclo correcto (con o sin filas que no se pueden eliminar).
Estas métricas están disponibles en Cloud Monitoring y en la consolaGoogle Cloud .
Monitorizar
También puedes monitorizar otras actividades de TTL.
Buscar el último análisis correcto
Puedes encontrar la última hora de la instantánea en la que Spanner completó un análisis de la tabla en busca de filas caducadas. Para hacerlo como una consulta de SQL, sigue estos pasos:
SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name
Por otro lado, la métrica row_deletion_policy/process_watermark_age
muestra información similar, pero se expresa como la diferencia entre la hora actual y la hora del último análisis. La métrica no se desglosa por tabla, sino que representa el tiempo de análisis más antiguo de las tablas habilitadas para TTL de la base de datos.
Las filas que coinciden con una política de TTL se suelen eliminar en un plazo de 72 horas a partir de su fecha de vencimiento. Puedes configurar una alerta en processed_watermark_age
para que se te notifique si supera las 72 horas.
Si processed_watermark_age
tiene más de 72 horas, puede indicar que las tareas de mayor prioridad impiden que se ejecute el TTL. En este caso, te recomendamos que compruebes la utilización de la CPU y añadas más capacidad de computación si es necesario. Si la utilización de la CPU está dentro del intervalo recomendado, comprueba si hay puntos de acceso mediante Key Visualizer.
Monitorizar las filas eliminadas
Para monitorizar la actividad de TTL en tu tabla, representa gráficamente la métrica row_deletion_policy/deleted_rows
. Esta métrica muestra el número de filas eliminadas a lo largo del tiempo.
Si no ha caducado ningún dato, esta métrica estará vacía.
Monitorizar filas que no se pueden eliminar
Cuando TTL no puede eliminar una fila, Spanner lo vuelve a intentar automáticamente.
Si, al volver a intentarlo, no se puede procesar la acción de TTL, Spanner omite la fila y la registra en la métrica row_deletion_policy/undeletable_rows_count
.
Puedes configurar una alerta en el
row_deletion_policy/undeletable_rows_count
para recibir una notificación cuando el recuento sea distinto de cero.
Si encuentras un recuento distinto de cero, puedes crear una consulta para desglosarlo por tabla:
SELECT TABLE_NAME, UNDELETABLE_ROWS, MIN_UNDELETABLE_TIMESTAMP
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0
Para consultar el contenido de la fila que no se puede eliminar, sigue estos pasos:
SELECT *
FROM $TABLE_NAME
WHERE $EXPIRE_COL >= $MIN_UNDELETABLE_TIMESTAMP
Lo más habitual es que se produzca un error al eliminar una fila debido a actualizaciones en cascada de tablas e índices intercalados, de modo que el tamaño de la transacción resultante supere los límites de mutación de Spanner. Para solucionar el problema, actualiza el esquema para añadir políticas de TTL independientes en tablas intercaladas.