Surveillance et métriques TTL

Cette page traite des métriques valeur TTL (Time To Live) de Spanner. Pour en savoir plus, consultez À propos de la valeur TTL.

de régression

Spanner fournit des informations sur les activités TTL dans une table système pouvant être lue avec des requêtes SQL et sous forme de métriques accessibles via Cloud Monitoring.

La table système indique les informations de valeur TTL par table pour une base de données, tandis que Cloud Monitoring génère des rapports sur les métriques au niveau de la base de données.

Utiliser une requête SQL

Spanner fournit une table intégrée qui suit les informations liées à la valeur TTL. La table est nommée SPANNER_SYS.ROW_DELETION_POLICIES et présente le schéma suivant.

Nom de la colonne Type Description
TABLE_NAME STRING Nom de la table contenant cette règle TTL.
PROCESSED_WATERMARK TIMESTAMP Cette règle a été exécutée sur toutes les lignes de la table jusqu'à présent. Certaines partitions de la table ont peut-être été traitées plus récemment. Cet horodatage représente donc la partition la moins récemment traitée. En général, ce délai est de 72 heures.
UNDELETABLE_ROWS INT64 Nombre de lignes qui ne peuvent pas être supprimées par la règle TTL. Pour en savoir plus, consultez Lignes impossibles à supprimer.
MIN_UNDELETABLE_TIMESTAMP TIMESTAMP Horodatage le plus ancien des lignes non supprimables, observé pendant le dernier cycle de traitement.

Les informations sur la règle de suppression sont renvoyées par table pour votre base de données.

Vous pouvez interroger ces données à l'aide d'une requête SQL semblable à celle-ci:

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

Les tables SPANNER_SYS ne sont accessibles que via des interfaces SQL. Par exemple:

  • Page Spanner Studio dans la console Google Cloud
  • La commande gcloud spanner databases execute-sql
  • L'API executeQuery

Les autres méthodes de lecture unique fournies par Spanner ne sont pas compatibles avec SPANNER_SYS.

Utilisez Cloud Monitoring

Spanner fournit les métriques suivantes pour surveiller l'activité TTL au niveau de la base de données:

  • row_deletion_policy/deleted_rows correspond au nombre de lignes supprimées par la règle TTL.
  • row_deletion_policy/undeletable_rows correspond au nombre de lignes qui correspondent à l'instruction de suppression de lignes (GoogleSQL) ou à l'instruction TTL INTERVAL(PostgreSQL), mais qui ne peuvent pas être supprimées. Cela est généralement dû au fait que la ligne comporte trop de lignes enfants, entraînant le dépassement de la limite de transaction de Spanner.
  • row_deletion_policy/processed_watermark_age correspond au délai entre maintenant et l'horodatage de lecture utilisé par le dernier cycle réussi (avec ou sans lignes non supprimables).

Ces métriques sont disponibles via Cloud Monitoring et la console Google Cloud.

Surveiller

Vous pouvez également surveiller d'autres activités TTL.

Rechercher la dernière analyse réussie

Vous pouvez trouver le dernier instantané auquel Spanner a effectué une analyse de la table à la recherche de lignes arrivées à expiration. Pour ce faire sous forme de requête SQL, procédez comme suit:

SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name

La métrique row_deletion_policy/process_watermark_age affiche également des informations similaires, mais est exprimée par la différence entre l'heure actuelle et l'heure de la dernière analyse. La métrique n'est pas ventilée par table, mais représente la date et l'heure d'analyse la plus ancienne parmi toutes les tables utilisant des valeurs TTL dans la base de données.

Les lignes qui correspondent à une règle TTL sont généralement supprimées dans les 72 heures suivant leur date d'expiration. Vous pouvez définir une alerte sur processed_watermark_age afin d'être averti si elle dépasse 72 heures.

Si processed_watermark_age date de plus de 72 heures, cela peut indiquer que des tâches à priorité plus élevée empêchent la valeur TTL de s'exécuter. Dans ce cas, nous vous recommandons de vérifier l'utilisation du processeur et d'ajouter de la capacité de calcul si nécessaire. Si l'utilisation du processeur se situe dans la plage recommandée, vérifiez la présence de hotspotting à l'aide de Key Visualizer.

Surveiller les lignes supprimées

Pour surveiller l'activité TTL sur votre table, représentez la métrique row_deletion_policy/deleted_rows sous forme de graphique. Cette métrique affiche le nombre de lignes supprimées au fil du temps.

Si aucune donnée n'a expiré, cette métrique est vide.

Surveiller les lignes impossibles à supprimer

Lorsque la valeur TTL ne peut pas supprimer une ligne, Spanner réessaie automatiquement. Si, lors d'une nouvelle tentative, l'action TTL ne peut pas être traitée, Spanner ignore la ligne et la signale dans la métrique row_deletion_policy/undeletable_rows_count.

Vous pouvez définir une alerte sur row_deletion_policy/undeletable_rows_count pour recevoir une notification de la présence d'un nombre différent de zéro.

Si vous constatez un nombre différent de zéro, vous pouvez créer une requête pour répartir le nombre par table:

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

Pour rechercher le contenu de la ligne impossible à supprimer:

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

Le plus souvent, un échec de suppression de ligne est dû à des mises à jour en cascade des tables et des index entrelacés, de sorte que la taille de la transaction résultante dépasse les limites de mutation de Spanner. Pour résoudre ce problème, mettez à jour votre schéma afin d'ajouter des règles TTL distinctes sur les tables entrelacées.