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 del TTL.

Métricas

Spanner proporciona información sobre las actividades del 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 información de TTL por tabla para una base de datos, mientras que Cloud Monitoring informa métricas a nivel de 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, es de 72 horas.
UNDELETABLE_ROWS INT64 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 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 en 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 admiten 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 que borró la política de TTL.
  • row_deletion_policy/undeletable_rows es la cantidad de filas que coinciden con la declaració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 hacía que la acción excediera el límite de transacciones de Spanner.
  • row_deletion_policy/processed_watermark_age es el tiempo transcurrido entre este momento y la marca de tiempo de lectura que usó el último ciclo exitoso (con o sin filas no borrables).

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

Supervisión

También puedes supervisar otras actividades de TTL.

Buscar el último análisis exitoso

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

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 hora actual 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.

Las filas que coinciden con una política de TTL suelen borrarse 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, recomendamos verificar el uso de CPU y agregar más capacidad de procesamiento si es necesario. Si el uso de CPU está dentro del rango recomendado, verifica 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 borradas en 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 la métrica row_deletion_policy/undeletable_rows_count.

Puedes configurar una alerta en row_deletion_policy/undeletable_rows_count para recibir notificaciones sobre un recuento que no sea cero.

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 filas se debe a actualizaciones en cascada de índices y tablas intercaladas, de modo que el tamaño de la transacción resultante excede los límites de mutación de Spanner. Para resolver el problema, actualiza tu esquema a fin de agregar políticas de TTL independientes en las tablas intercaladas.