Auf dieser Seite werden die Spanner-Messwerte für die Gültigkeitsdauer (Time to Live, TTL) erläutert. Weitere Informationen finden Sie unter Über TTL.
Messwerte
Spanner bietet Informationen zu TTL-Aktivitäten in einer Systemtabelle, die mit SQL-Abfragen gelesen werden kann, und als Messwerte, die über Cloud Monitoring aufgerufen werden.
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, in der Informationen zur TTL erfasst werden. Die Tabelle hat den Namen SPANNER_SYS.ROW_DELETION_POLICIES
und 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 gemäß der TTL-Richtlinie nicht 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 Einzellesemethoden unterstützen SPANNER_SYS
nicht.
Cloud Monitoring verwenden
Spanner bietet die folgenden Messwerte, um die TTL-Aktivität auf Datenbankebene zu überwachen:
row_deletion_policy/deleted_rows
ist die Anzahl der Zeilen, die gemäß der TTL-Richtlinie gelöscht wurden.row_deletion_policy/undeletable_rows
ist die Anzahl der Zeilen, die mit der Anweisung zum Löschen von Zeilen (GoogleSQL) oderTTL INTERVAL
(PostgreSQL) übereinstimmen, aber nicht gelöscht werden können. Das liegt in der Regel daran, dass die Zeile zu viele untergeordnete Zeilen hat, 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 abrufbar.
Überwachen
Sie können auch andere TTL-Aktivitäten überwachen.
Letzten erfolgreichen Scan finden
Sie können den letzten Snapshot-Zeitpunkt herausfinden, zu dem Spanner einen Scan der Tabelle nach abgelaufenen Zeilen abgeschlossen hat. Gehen Sie dazu bei einer SQL-Abfrage so vor:
SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name
Alternativ werden im Messwert row_deletion_policy/process_watermark_age
ähnliche Informationen angezeigt, die jedoch als Differenz zwischen der aktuellen Zeit und der Zeit der letzten Prüfung ausgedrückt werden. Der Messwert wird nicht nach Tabelle aufgeschlüsselt, sondern entspricht der ältesten Scanzeit aller TTL-kompatiblen Tabellen in der Datenbank.
Zeilen, die mit einer TTL-Richtlinie übereinstimmen, werden normalerweise innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht. Sie können für processed_watermark_age
eine Benachrichtigung einrichten, damit Sie beim Überschreiten von 72 Stunden benachrichtigt werden.
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 im Blick behalten
Wenn Sie die TTL-Aktivität in Ihrer Tabelle überwachen möchten, zeichnen Sie den Messwert row_deletion_policy/deleted_rows
in einem Diagramm auf. Dieser Messwert gibt die Anzahl der Zeilen an, die im Laufe der Zeit gelöscht wurden.
Wenn keine Daten abgelaufen sind, ist dieser Messwert leer.
Nicht löschbare Zeilen im Blick behalten
Wenn TTL eine Zeile nicht löschen kann, startet Spanner automatisch einen Wiederholungsversuch.
Wenn die TTL-Aktion bei einem Wiederholungsversuch nicht verarbeitet werden kann, überspringt Spanner die Zeile und erfasst 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
Am häufigsten tritt ein Fehler beim Löschen von Zeilen aufgrund kaskadierender Aktualisierungen von verschränkten Tabellen und Indexen auf, wodurch 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.