Cette page décrit les métriques de valeur TTL (Time To Live) de Spanner. Pour en savoir plus, consultez la section À propos de la valeur TTL.
Métriques
Spanner fournit des informations sur les activités de TTL dans une table système qui peuvent être lues à l'aide de requêtes SQL et en tant que métriques accessibles via Cloud Monitoring.
La table système fournit des informations TTL par table pour une base de données, tandis que Cloud Monitoring fournit des 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 au 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 stratégie a été appliquée à toutes les lignes de la table à ce stade. Certaines partitions de table peuvent avoir été traitées plus récemment. Par conséquent, cet horodatage représente la partition la moins récemment traitée. En règle générale, cela prend moins 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 la section Lignes non supprimables. |
MIN_UNDELETABLE_TIMESTAMP | TIMESTAMP | Horodatage le plus ancien des lignes non supprimables, observé pendant le dernier cycle de traitement. |
Les informations sur les règles 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 à la suivante:
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 ligne (Google SQL) ouTTL INTERVAL
(PostgreSQL), mais qui ne peuvent pas être supprimées. Cela se produit généralement lorsque la ligne comporte trop de lignes enfants, ce qui entraîne 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 consoleGoogle Cloud .
Surveiller
Vous pouvez également surveiller d'autres activités TTL.
Rechercher la dernière analyse réussie
Vous pouvez rechercher la dernière heure d'instantané à laquelle Spanner a terminé une analyse de la table pour rechercher les 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 elle est exprimée en tant que 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 d'analyse la plus ancienne de toutes les tables compatibles avec le TTL de 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
pour ê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 de priorité plus élevée empêchent l'exécution du TTL. Dans ce cas, nous vous recommandons de vérifier l'utilisation du processeur et d'augmenter la capacité de calcul si nécessaire. Si l'utilisation du processeur se situe dans la plage recommandée, recherchez des hotspots à l'aide de Key Visualizer.
Surveiller les lignes supprimées
Pour surveiller l'activité TTL dans votre table, représentez graphiquement la métrique row_deletion_policy/deleted_rows
. 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 non supprimables
Lorsque le TTL ne parvient pas à supprimer une ligne, Spanner effectue automatiquement une nouvelle tentative.
Si, lors de la 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 le nombre est différent de zéro, vous pouvez créer une requête pour le ventiler 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 non effaçable:
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 de tables et d'index entrelacés, de sorte que la taille de la transaction résultante dépasse les limites de mutation de Spanner. Pour résoudre le problème, mettez à jour votre schéma afin d'ajouter des stratégies TTL distinctes sur les tables entrelacées.