Zeitstempelgrenzen

Einführung

Wenn Sie in Cloud Spanner Daten entweder in einer schreibgeschützten Transaktion oder in einem einzelnen Leseaufruf lesen, können Sie Cloud Spanner durch Festlegen einer Zeitstempelgrenze mitteilen, wie ein Zeitstempel zum Lesen der Daten ausgewählt werden soll.

Warum sollten Sie eine Zeitstempelgrenze festlegen? Wenn Sie eine geografisch verteilte Datenbank nutzen (d. h. Sie haben Ihre Cloud Spanner-Instanz mit einer Instanzkonfiguration für mehrere Regionen erstellt) und Ihre Anwendung beim Lesen von Daten eine begrenzte Veralterung toleriert, erzielen Sie durch die Ausführung eines veralteten Lesevorgangs anstelle eines starken Lesevorgangs möglicherweise Latenzvorteile. (Weitere Informationen zu diesen Lesetypen finden Sie unter Lesevorgänge.)

Arten von Zeitstempelgrenzen

Es gibt folgende Arten von Zeitstempelgrenzen:

  • Stark (Standard): liest die aktuellen Daten
  • Begrenzte Veralterung: liest eine Version der Daten, die nur bis zu einer bestimmten Grenze veraltet sind
  • Exakte Veralterung: liest die Version der Daten mit einem bestimmten Zeitstempel, beispielsweise zu einem Zeitpunkt in der Vergangenheit, wobei Sie auch einen Zeitstempel zu einem zukünftigen Zeitpunkt festlegen können (Wenn Sie einen Zeitstempel in der Zukunft angeben, wartet Cloud Spanner auf diesen Zeitstempel, bevor der Lesevorgang ausgeführt wird.)

Hinweise:

  • Obwohl Lesevorgänge mit diesen Modi von Zeitstempelgrenzen nicht Teil einer Lese- und Schreibtransaktion sind, können sie das Warten auf einen Commit gleichzeitiger Lese- und Schreibtransaktionen blockieren. Begrenzt veraltete Lesevorgänge versuchen, einen Zeitstempel auszuwählen, mit dem dieses Blockieren verhindert wird, allerdings ist es möglich, dass sie trotzdem blockieren.

  • Veraltete Lesevorgänge (beispielsweise unter Verwendung der begrenzten oder exakten Veralterung) haben den maximalen Leistungsvorteil bei den längsten Veralterungsintervallen. Verwenden Sie eine Mindestveralterung von 10 Sekunden, damit Sie einen Vorteil erhalten können.

Die Arten der Zeitstempelgrenzen von Cloud Spanner werden im Folgenden näher erläutert.

Stark

Cloud Spanner bietet einen Grenztyp für starke Lesevorgänge. Starke Lesevorgänge erkennen garantiert die Auswirkungen aller Transaktionen, die vor Start des Lesevorgangs durchgeführt wurden. Außerdem sind alle Zeilen, die von einem einzigen Lesevorgang ausgegeben wurden, miteinander konsistent. Wenn ein Teil des Lesevorgangs eine Transaktion erkennt, erkennen alle Teile des Lesevorgangs die Transaktion.

Starke Lesevorgänge sind nicht wiederholbar: Zwei aufeinanderfolgende starke schreibgeschützte Transaktionen können inkonsistente Ergebnisse zurückgeben, wenn Schreibvorgänge gleichzeitig ausgeführt werden. Wenn Lesevorgang-übergreifende Konsistenz erforderlich ist, sollten die Lesevorgänge innerhalb derselben Transaktion oder zu einem genauen Zeitstempel ausgeführt werden.

Begrenzte Veralterung

Cloud Spanner bietet einen Grenztyp für begrenzte Veralterung. Mit Modi der begrenzten Veralterung kann Cloud Spanner den Lesezeitstempel auswählen, wobei vom Nutzer bereitgestellte Veralterungsgrenzen vorbehalten sind. Der Cloud Spanner wählt den neuesten Zeitstempel innerhalb der Begrenzung, der die Ausführung der Lesevorgänge am nächstgelegenen Replikat ohne Blockierung ermöglicht.

Alle ausgegebenen Zeilen sind miteinander konsistent – wenn ein Teil des Lesevorgangs eine Transaktion erkennt, erkennen alle Teile des Lesevorgangs die Transaktion. Begrenzt veraltete Lesevorgänge sind nicht wiederholbar: Zwei veraltete Lesevorgänge können, selbst wenn sie die gleiche Skalierung verwenden, zu unterschiedlichen Zeitstempeln ausgeführt werden und somit inkonsistente Ergebnisse zurückgeben.

Begrenzt veraltete Lesevorgänge sind in der Regel etwas langsamer als vergleichbare exakt veraltete Lesevorgänge.

Exakte Veralterung

Cloud Spanner bietet einen Grenztyp für exakte Veralterung. Diese Zeitstempelgrenzen führen Lesevorgänge mit einem vom Nutzer angegebenen Zeitstempel aus. Bei Lesevorgängen mit einem Zeitstempel wird garantiert, dass ein konsistentes Präfix der globalen Transaktionshistorie angezeigt wird. Sie beobachten Änderungen, die von allen Transaktionen mit einem Commit-Zeitstempel durchgeführt werden, der kleiner oder gleich dem Lesezeitstempel ist, und erkennen keine Änderungen, die von Transaktionen mit einem größeren Commit-Zeitstempel ausgeführt werden. Sie blockieren, bis alle in Konflikt stehenden Transaktionen abgeschlossen sind, denen Commit-Zeitstempel zugewiesen werden können, die kleiner oder gleich dem Lesezeitstempel sind.

Der Zeitstempel kann entweder als ein absoluter Cloud Spanner-Commit oder als eine zur aktuellen Zeit relativen Veralterung ausgedrückt werden.

Diese Modi benötigen keine "Verhandlungsphase", um einen Zeitstempel auszuwählen. Folglich sind sie etwas schneller als äquivalente begrenzt veraltete Gleichzeitigkeitsmodi. Andererseits liefern begrenzt veraltete Lesevorgänge in der Regel neuere Ergebnisse.

Maximale Zeitstempelveralterung

Cloud Spanner bereinigt kontinuierlich gelöschte und überschriebene Daten im Hintergrund, um Speicherplatz zurückzugewinnen. Dieser Prozess wird als Version GC bezeichnet. Version GC nimmt Versionen zurück, sobald sie eine Stunde alt sind. Deshalb kann Cloud Spanner keine Lesevorgänge mit einem mehr als eine Stunde alten Lesezeitstempel machen. Diese Einschränkung gilt auch für laufende Lesevorgänge und/oder SQL-Abfragen, deren Zeitstempel während der Ausführung zu alt werden. Für Lesevorgänge und SQL-Abfragen mit zu alten Zeitstempeln wird der Fehler FAILED_PRECONDITION ausgegeben.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Spanner-Dokumentation