TTL-Messwerte und -Monitoring

Auf dieser Seite werden Spanner-Messwerte zur Gültigkeitsdauer (TTL) erläutert. Weitere Informationen finden Sie unter Über TTL.

Messwerte

Spanner stellt Informationen zu TTL-Aktivitäten in einer Systemtabelle bereit, die mit SQL-Abfragen gelesen werden kann, und als Messwerte, auf die über Cloud Monitoring zugegriffen werden kann.

Die Systemtabelle liefert TTL-Informationen pro Tabelle für eine Datenbank und Cloud Monitoring liefert Messwerte auf Datenbankebene.

SQL-Abfrage verwenden

Spanner bietet eine integrierte Tabelle, die Informationen zur TTL verfolgt. Die Tabelle heißt SPANNER_SYS.ROW_DELETION_POLICIES und hat das folgende Schema.

Spaltenname Typ Beschreibung
TABLE_NAME STRING Der Name der Tabelle, die diese TTL-Richtlinie enthält.
PROCESSED_WATERMARK TIMESTAMP Diese Richtlinie wurde ab diesem Zeitpunkt für alle Zeilen in der Tabelle ausgeführt. Einige Tabellenpartitionen wurden möglicherweise danach verarbeitet, sodass dieser Zeitstempel die zuletzt verarbeitete Partition darstellt. Normalerweise geschieht dies innerhalb von 72 Stunden.
UNDELETABLE_ROWS INT64 Die Anzahl der Zeilen, die nicht durch die TTL-Richtlinie gelöscht werden können. Weitere Informationen finden Sie unter Nicht löschbare Zeilen.
MIN_UNDELETABLE_TIMESTAMP TIMESTAMP Der älteste Zeitstempel für nicht löschbare Zeilen, der während des letzten Verarbeitungszyklus beobachtet wurde.

Die Informationen zur Löschrichtlinie werden pro Tabelle für Ihre Datenbank zurückgegeben.

Sie können diese Daten mit einer SQL-Abfrage abfragen, die etwa so aussieht:

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

Auf die SPANNER_SYS-Tabellen kann nur über SQL-Oberflächen zugegriffen werden. Beispiel:

  • Die Seite Spanner Studio in der Google Cloud Console
  • Befehl gcloud spanner databases execute-sql
  • Mit der executeQuery API

Andere von Spanner bereitgestellte Methoden für einzelne Leseaufrufe unterstützen SPANNER_SYS nicht.

Cloud Monitoring verwenden

Spanner bietet die folgenden Messwerte zum Überwachen der TTL-Aktivität auf Datenbankebene:

  • row_deletion_policy/deleted_rows ist die Anzahl der Zeilen, die durch die TTL-Richtlinie gelöscht werden.
  • row_deletion_policy/undeletable_rows ist die Anzahl der Zeilen, die der Zeilenlöschungsanweisung (GoogleSQL) oder der Anweisung TTL INTERVAL(PostgreSQL) entsprechen, aber nicht gelöscht werden können. Das liegt in der Regel daran, dass die Zeile zu viele untergeordnete Zeilen hatte, wodurch die Aktion das Transaktionslimit von Spanner überschreitet.
  • row_deletion_policy/processed_watermark_age ist die Zeit zwischen jetzt und dem Lesezeitstempel, der vom letzten erfolgreichen Zyklus verwendet wurde (mit oder ohne nicht löschbaren Zeilen).

Diese Messwerte sind über Cloud Monitoring und die Google Cloud Console verfügbar.

Überwachen

Sie können auch andere TTL-Aktivitäten überwachen.

Letzten erfolgreichen Scan suchen

Sie können den Zeitpunkt des letzten Snapshots ermitteln, zu dem Spanner einen Scan der Tabelle auf der Suche nach abgelaufenen Zeilen ausgeführt hat. Gehen Sie dazu bei einer SQL-Abfrage so vor:

SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name

Alternativ zeigt der Messwert row_deletion_policy/process_watermark_age ähnliche Informationen an, wird aber als Differenz zwischen der aktuellen Zeit und der letzten Scanzeit ausgedrückt. Der Messwert wird nicht nach Tabellen aufgeschlüsselt, sondern stellt die älteste Scanzeit aller TTL-fähigen Tabellen in der Datenbank dar.

Zeilen, die einer TTL-Richtlinie entsprechen, werden in der Regel innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht. Du kannst für processed_watermark_age eine Benachrichtigung einrichten, damit du bei mehr als 72 Stunden benachrichtigt wirst.

Wenn processed_watermark_age älter als 72 Stunden ist, kann dies darauf hindeuten, dass Aufgaben mit höherer Priorität die Ausführung von TTL verhindern. In diesem Fall empfehlen wir, die CPU-Auslastung zu prüfen und falls nötig mehr Rechenkapazität hinzuzufügen. Wenn die CPU-Auslastung im empfohlenen Bereich liegt, führen Sie mit Key Visualizer eine Prüfung auf Heißlaufen durch.

Gelöschte Zeilen überwachen

Wenn Sie die TTL-Aktivität in Ihrer Tabelle beobachten möchten, stellen Sie den Messwert row_deletion_policy/deleted_rows grafisch dar. Dieser Messwert zeigt die Anzahl der im Zeitverlauf gelöschten Zeilen an.

Wenn keine Daten abgelaufen sind, ist dieser Messwert leer.

Nicht löschbare Zeilen überwachen

Wenn über die TTL eine Zeile nicht gelöscht werden kann, wiederholt Spanner den Vorgang automatisch. Wenn die TTL-Aktion bei einem erneuten Versuch nicht verarbeitet werden kann, überspringt Spanner die Zeile und meldet sie im Messwert row_deletion_policy/undeletable_rows_count.

Sie können für row_deletion_policy/undeletable_rows_count eine Benachrichtigung einrichten, um über eine Anzahl ungleich null informiert zu werden.

Wenn Sie eine Anzahl ungleich null finden, können Sie eine Abfrage erstellen, um die Anzahl nach Tabelle aufzuschlüsseln:

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

So rufen Sie den Inhalt der nicht löschbaren Zeile ab:

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

Meist ist ein Fehler beim Löschen von Zeilen auf kaskadierende Aktualisierungen von verschränkten Tabellen und Indexen zurückzuführen, durch die die resultierende Transaktionsgröße die Mutationslimits von Spanner überschreitet. Sie können das Problem durch eine Aktualisierung Ihres Schemas beheben, indem Sie separate TTL-Richtlinien für verschränkte Tabellen hinzufügen.