Auf dieser Seite wird beschrieben, wie Sie die Isolation von wiederholbaren Lesevorgängen in Spanner verwenden.
„Repeatable Read“ ist eine Isolationsebene, die dafür sorgt, dass bei allen Lesevorgängen innerhalb einer Transaktion ein konsistenter Snapshot der Datenbank angezeigt wird, wie er zu Beginn der Transaktion vorhanden war. In Spanner wird diese Isolationsebene mit einer Technik implementiert, die auch als Snapshot-Isolation bezeichnet wird. Dieser Ansatz ist in Szenarien mit hoher Lese-/Schreibkonkurrenz von Vorteil, in denen zahlreiche Transaktionen Daten lesen, die von anderen Transaktionen geändert werden könnten. Durch die Verwendung eines festen Snapshots werden mit „Repeatable Read“ die Leistungseinbußen der strengeren Isolationsebene „Serializable“ vermieden. Lesevorgänge können ohne Sperren und ohne Blockierung gleichzeitiger Schreibvorgänge ausgeführt werden. Dies führt möglicherweise zu weniger abgebrochenen Transaktionen, die aufgrund von Serialisierungskonflikten wiederholt werden müssen. Weitere Informationen finden Sie unter Übersicht über Isolationsstufen.
Isolationsebene festlegen
Sie können die Isolationsebene für Lese-/Schreibtransaktionen auf Transaktionsebene mit den folgenden Methoden festlegen:
Clientbibliotheken
Go
Java
Node.js
Python
REST
Mit der TransactionOptions.isolation_level
REST API können Sie die Isolationsebene für Lese-/Schreibtransaktionen auf Transaktionsebene festlegen. Gültige Optionen sind TransactionOptions.SERIALIZABLE
und TransactionOptions.REPEATABLE_READ
. Standardmäßig wird in Spanner die Isolationsebene auf „serialisierbare Isolation“ festgelegt.
RPC
Nicht unterstützte Anwendungsfälle
- Die Isolation vom Typ „Repeatable Read“ kann nur in Lese-Schreib-Transaktionen verwendet werden. Spanner gibt einen Fehler zurück, wenn Sie diese Isolationsstufe für eine schreibgeschützte Transaktion festlegen. Alle schreibgeschützten Transaktionen werden mit einem festen Snapshot ausgeführt und erfordern keine Sperren.
- Sie können die Isolationsebene „Wiederholbares Lesen“ nicht verwenden, um Tabellen zu ändern, für deren Spalten Volltextsuchindexe definiert sind.
Nächste Schritte
Informationen zur Verwendung von SELECT FOR UPDATE in der Isolationsebene „Repeatable Read“
Weitere Informationen zur Serialisierbarkeit und externen Konsistenz von Spanner finden Sie unter TrueTime und externe Konsistenz.