Auf dieser Seite werden die TTL-Messwerte (Time to Live) von Spanner 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, die Informationen zu
auf TTL setzen. Die Tabelle heißt SPANNER_SYS.ROW_DELETION_POLICIES
und enthält den
im folgenden 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:
- Spanner Studio-Seite 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 zum Überwachen der TTL-Aktivität unter auf Datenbankebene:
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 Zeilenlöschung (GoogleSQL) oderTTL INTERVAL
(PostgreSQL) aber nicht gelöscht werden kann. Dies liegt normalerweise daran, dass in der Zeile zu viele untergeordnete Zeilen, wodurch die Aktion die Anzahl der Zeilen von Spanner überschreitet Transaktionslimitrow_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 finden
Sie können den letzten Snapshot-Zeitpunkt finden, zu dem Spanner einen der Tabelle nach abgelaufenen Zeilen. 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 Uhrzeit und der Uhrzeit 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 einer TTL-Richtlinie entsprechen, werden in der Regel innerhalb von 72 Stunden nach der
Gültigkeitsdatum. Sie können für folgende Elemente Benachrichtigungen einrichten:
processed_watermark_age
, damit Sie benachrichtigt werden, wenn die Dauer länger als 72 Stunden ist.
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 ü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 überwachen
Wenn TTL eine Zeile nicht löschen kann, startet Spanner automatisch einen Wiederholungsversuch.
Wenn die TTL-Aktion beim erneuten Versuch nicht verarbeitet werden kann, überspringt Spanner
der Zeile und wird im row_deletion_policy/undeletable_rows_count
aufgeführt.
Messwert.
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.