Gültigkeitsdauer (TTL)

Mit der Gültigkeitsdauer (TTL) können Sie Richtlinien festlegen, um regelmäßig Daten aus Spanner-Tabellen. Nicht benötigte Daten entfernen:

  • Reduziert die Speicher- und Sicherungskosten.
  • Es verringert die Anzahl der Zeilen, die die Datenbank nach einigen Abfragen scannen muss, wodurch die Abfrageleistung potenziell erhöht wird.
  • Hilft bei der Einhaltung von Vorschriften oder Branchenrichtlinien, die Aufbewahrungsdauer für bestimmte Datentypen.

TTL ist ideal für regelmäßige Bereinigungsaktivitäten. Sie wird kontinuierlich im Hintergrund ausgeführt und löscht zulässige Daten regelmäßig in Batches. Die Daten werden in der Regel innerhalb von 72 Stunden nach ihrem Ablaufdatum gelöscht. Durch eine TTL werden Daten nicht sofort entwertet oder für Abfragen ausgeblendet, wenn sie gelöscht werden können. Die TTL prüft auch keine Daten, während sie eingefügt wurden, und hindert Sie daher nicht daran, und fügen Sie eine Zeile mit einem abgelaufenen Zeitstempel ein.

TTL soll die Auswirkungen auf andere Datenbankaktivitäten minimieren. Es parallelisiert die Arbeit effizienter als Endnutzerabfragen und enthält eine Wiederholungslogik, um eine End-to-End-Bereinigung zu gewährleisten.

Ein weiterer Verdichtungsprozess im Hintergrund gibt Speicher zurück, in der Regel innerhalb von sieben Tagen.

Wie funktioniert TTL?

Sie können die TTL für Spanner-Tabellen festlegen, indem Sie das Löschen von Zeilen definieren Richtlinie im Datenbankschema ein, mit der Spanner nicht benötigte Daten regelmäßig löschen. Jede Tabelle kann eine eigene Richtlinie haben. Nur eine Die TTL-Richtlinie kann pro Tabelle angegeben werden. Sie richten die TTL anders ein, GoogleSQL-Dialekt-Datenbanken und PostgreSQL-Dialekt-Datenbanken.

TTL mit GoogleSQL

Mit GoogleSQL definieren Sie eine Richtlinie für das Löschen von Zeilen, indem Sie Folgendes angeben: einen timestamp und ein timestamp, um zu bestimmen, wann eine Zeile gelöscht werden kann; z. B. das Datum der letzten Aktualisierung plus 30 Tage.

Ein Hintergrundsystemprozess prüft täglich die infrage kommenden Zeilen. Sie parallelisiert die tatsächlichen Löschvorgänge in Batches, die in der Nähe der Speicherorte der Daten ausgeführt werden. Jeder Batch wird mit einem eigenen Zeitstempel in einer eigenen Transaktion ausgeführt. Daher werden die Zeilen in einem bestimmten Batch zusammen mit allen Indexen und verschränkten untergeordneten Elementen garantiert untrennbar gelöscht. Batches gleichzeitige Löschungen in unterschiedlichen Transaktionen.

Da dies ein asynchroner Hintergrundprozess ist, gibt es eine Verzögerung zwischen Berechtigung und Löschen. In der Regel beträgt die Verzögerung weniger als 72 Stunden. Als Zeilen werden möglicherweise noch bis zu drei Tage in der Tabelle angezeigt, nachdem die Gültigkeitsdauer (TTL) abgelaufen; Beispiel: Eine Tabelle mit einer Richtlinie für das Löschen von Zeilen, die ältere Zeilen löscht, können auch Zeilen enthalten, die bis zu sieben Tage alt oder älter sind. nicht löschbare Zeilen.

Eine detaillierte Anleitung zum Erstellen einer GoogleSQL-Zeile finden Sie unter TTL-Richtlinie erstellen.

TTL mit PostgreSQL

Mit PostgreSQL kann ein Datenbankinhaber eine TTL INTERVAL-Klausel in Die CREATE TABLE- oder ALTER TABLE-Anweisung, um eine Richtlinie für das Löschen von Zeilen zu definieren.

Um eine Richtlinie für das Löschen von Zeilen für eine PostgreSQL-Tabelle festzulegen, muss die Tabelle haben eine Spalte mit dem Datentyp TIMESTAMPTZ. Die TTL INTERVAL-Klausel verwendet um eine Intervallspezifikation dafür festzulegen, wann eine Zeile für zu löschen.

Die Klausel muss eine ganze Anzahl von Tagen ergeben. Zum Beispiel ist '3 DAYS' zulässig und '4 DAYS 2 MINUTES - 2 MINUTES', aber '4 DAYS 3 MINUTES' ist nicht zulässig und es wird ein Fehler zurückgegeben. Sie können keine negativen Zahlen.

Bei der TTL-Speicherbereinigung werden infrage kommende Zeilen kontinuierlich und im Hintergrund gelöscht. Da dies ein asynchroner Hintergrundprozess ist, gibt es eine Verzögerung zwischen Berechtigung und Löschung. Die Tabelle kann Zeilen enthalten, die für die TTL infrage kommen deren Löschung aber noch nicht abgeschlossen ist. In der Regel ist die Verzögerung geringer als 72 Stunden.

Anweisungen zum Erstellen einer PostgreSQL-Richtlinie zum Löschen von Zeilen finden Sie hier: Siehe TTL-Richtlinie erstellen.

Sicherungen und TTL

Sicherung wiederherstellen

Wenn Sie eine Datenbank aus einer Sicherung wiederherstellen, werden alle Richtlinien zum Löschen von Zeilen, die in der Quelldatenbank konfiguriert wurden, automatisch gelöscht. Dadurch wird verhindert, kann Spanner abgelaufene Daten nicht sofort löschen, Sicherung wurde wiederhergestellt. Daher müssen Sie die TTL manuell neu konfigurieren.

Datenkonsistenz

Eine Sicherung ist ein konsistenter Snapshot Ihrer Daten an einem zu einem bestimmten Zeitpunkt (version_time) angezeigt. Die Sicherung kann Zeilen enthalten, möglicherweise für das Löschen von TTLs infrage kommen, aber für die sie noch nicht abgeschlossen sind. Entsprechend lesen Dataflow-Exportjobs die gesamte Tabelle an einem Zeitstempel fest.

Audit

Mit TTL können Löschvorgänge über Änderungsstreams geprüft werden. Datensätze zu Änderungsstreams, die TTL-Änderungen an einer Datenbank verfolgen, haben die Das Feld transaction_tag wurde auf RowDeletionPolicy gesetzt und die Das Feld is_system_transaction wurde auf true festgelegt. Die Änderungsstreams werden von Lesern Sie können alle TTL-Einträge oder alle Einträge mit Ausnahme der je nach Anwendungsfall. Sehen Sie sich ein Beispiel für die Verwendung von Beam zum Filtern nach Transaktions-Tags.