Transaktionsisolation in der Google App-Engine

9

In Google App Engine wird die Transaktionsisolierung als SNAPSHOT-Isolation bezeichnet. Hier werden keine vorherigen Löschungen oder Puts in der Transaktion selbst angezeigt, sondern nur der Status des Datenspeichers beim Start der Transaktion ( Ссылка ). In einem älteren Artikel heißt es, dass die Transaktionsebene tatsächlich SERIALIZABLE ist ( Ссылка ).

Das Google Test Compatibility Kit (TCK) zeigt zwar, dass es tatsächlich eine SNAPSHOT-Isolierung ist, aber im oben genannten Artikel heißt es: "Innerhalb von Transaktionen ist die Isolationsstufe standardmäßig SNAPSHOT, mit der Option, zu SERIALIZABLE zu wechseln ".

Meine Frage ist, wie kann ich die Isolationsstufe aktivieren, um SERIALIZABLE zu werden?

    
Navraj Chohan 04.07.2013, 16:32
quelle

1 Antwort

3

Sie können sehen, wie Sie die Isolationsstufe in der API-Referenz von BeginTransaction ändern. Sie ist derzeit nur in der Google Cloud Datastore-HTTP-API konfigurierbar und wird standardmäßig für alle App Engine-SDKs auf SERIALIZABLE gesetzt. Aber ich denke nicht, dass dies tun wird, was Sie wollen.

SNAPSHOT vs SERIALIZABLE steuert die Transaktionsisolation oder die Interaktion zwischen gleichzeitigen Transaktionen. Es steuert nicht, wie eine Transaktion mit sich selbst interagiert (obwohl in einigen Systemen diese beiden Dinge zusammenfallen).

Im Datenspeicher wird durch Setzen von SERIALIZABLE nicht festgelegt, dass eine Transaktion ihre eigenen nicht festgeschriebenen Mutationen sieht. Es bedeutet nur, dass gleichzeitige Transaktionen kollidieren, wenn ihre Lese- und Schreibmuster bei der Serialisierung nicht gültig sind. Zum Beispiel kollidieren die folgenden zwei Transaktionen notwendigerweise bei Verwendung der SERIALIZABLE-Isolierung:

%Vor%

Da keine dieser beiden Ordnungen möglich ist:

%Vor%

Diese Transaktionen kollidieren jedoch nicht unbedingt mit der SNAPSHOT-Isolierung.

Sowohl SNAPSHOT als auch SERIALIZABLE lesen von einem 'Snapshot' der Daten, als ob die Daten so geändert werden, dass Konflikte mit Transaktionsisolationsgarantien bestehen, während die Transaktion ausgeführt wird. Die Transaktion kann nicht festgeschrieben werden.

    
Alfred Fuller 03.09.2013, 22:42
quelle