Métricas y supervisión del TTL

En esta página, se analizan las métricas de tiempo de actividad (TTL) de Spanner. Para obtener más información, consulta Acerca de TTL.

Métricas

Spanner proporciona información sobre las actividades de TTL en un sistema que se puede leer con consultas en SQL y como métricas a las que se accede a través de Cloud Monitoring.

La tabla del sistema informa la información de TTL por tabla para una base de datos, mientras que la supervisión de Cloud informa las métricas a nivel de la base de datos.

Usa una consulta en SQL

Spanner proporciona una tabla integrada que realiza un seguimiento de la 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 A partir de este momento, esta política se ejecutó en todas las filas de la tabla. Es posible que algunas particiones de tabla se hayan procesado más recientemente, por lo que esta marca de tiempo representa la partición que se procesó menos recientemente. Por lo general, se realiza en un plazo de 72 horas.
UNDELETABLE_ROWS INT64 Es la cantidad de filas que la política de TTL no puede borrar. Consulta Filas que no se pueden borrar para obtener más detalles.
MIN_UNDELETABLE_TIMESTAMP TIMESTAMP Es la marca de tiempo más antigua de las filas que no se pueden borrar que se observó durante el último ciclo de procesamiento.

La información de la política de eliminación se muestra por tabla para tu base de datos.

Puedes 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 las interfaces de SQL. por ejemplo:

  • La página de Spanner Studio en la consola de Google Cloud
  • El comando gcloud spanner databases execute-sql
  • La API de executeQuery

Otros métodos de lectura única que proporciona Spanner no son compatibles con SPANNER_SYS.

Use Cloud Monitoring

Spanner proporciona las siguientes métricas para supervisar la actividad de TTL a nivel de la base de datos:

  • row_deletion_policy/deleted_rows es la cantidad de filas borradas por la política de TTL.
  • row_deletion_policy/undeletable_rows es la cantidad de filas que coinciden con la instrucción de eliminación de filas (GoogleSQL) o TTL INTERVAL (PostgreSQL), pero que no se pueden borrar. Por lo general, esto se debe a que la fila tenía demasiadas filas secundarias, lo que provocó que la acción excediera el límite de transacciones de Spanner.
  • row_deletion_policy/processed_watermark_age es el tiempo entre hoy y las marca de tiempo de lectura usada por el último ciclo exitoso (con o sin no borrables filas).

Estas métricas están disponibles a través de Cloud Monitoring y la consola de Google Cloud.

Supervisar

También puedes supervisar otras actividades de TTL.

Cómo encontrar el último análisis exitoso

Puedes encontrar la última hora de instantánea en la que Spanner completó un análisis de la tabla en busca de filas vencidas. Para hacerlo como una consulta de SQL, sigue estos pasos:

SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name

Como alternativa, la métrica row_deletion_policy/process_watermark_age muestra información similar, pero se expresa como la diferencia entre la y la hora del último análisis. La métrica no se desglosa por tabla, pero representa el tiempo de análisis más antiguo de cualquier tabla habilitada para TTL en la base de datos.

Por lo general, las filas que coinciden con una política de TTL se borran en un plazo de 72 horas después 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 lo siguiente: tareas con mayor prioridad impiden que se ejecute el TTL. En este caso, recomendamos verificar el uso de CPU y agregar más capacidad de procesamiento si es necesario. Si el uso de CPU es dentro del rango recomendado, comprueba la generación de hotspots con Key Visualizer.

Supervisa las filas borradas

Para supervisar la actividad de TTL en tu tabla, grafica la métrica row_deletion_policy/deleted_rows. Esta métrica muestra la cantidad de filas eliminadas con el tiempo.

Si no hay datos vencidos, esta métrica estará vacía.

Supervisa las filas que no se pueden borrar

Cuando el TTL no puede borrar una fila, Spanner vuelve a intentarlo automáticamente. Si, luego de reintentarlo, la acción de TTL no se puede procesar, Spanner omite la fila y la informa en el row_deletion_policy/undeletable_rows_count métrica

Puedes configurar una alerta en la row_deletion_policy/undeletable_rows_count para recibir una notificación de un valor distinto de cero de los datos.

Si encuentras un recuento distinto de cero, puedes crear una consulta para desglosar el recuento por tabla:

SELECT TABLE_NAME, UNDELETABLE_ROWS, MIN_UNDELETABLE_TIMESTAMP
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0

Para buscar el contenido de la fila que no se puede borrar, haz lo siguiente:

SELECT *
FROM $TABLE_NAME
WHERE $EXPIRE_COL >= $MIN_UNDELETABLE_TIMESTAMP

Por lo general, un error en la eliminación de una fila se debe a actualizaciones en cascada para índices y tablas intercaladas de modo que el tamaño de la transacción resultante supere Límites de mutación de Spanner Para resolver el problema, actualiza el esquema para agregar políticas de TTL separadas en tablas intercaladas.