SNAPSHOT
-Isolationsstufe
Die Isolationsstufe SNAPSHOT
– die Standardstufe – ermöglicht es der Transaktion, nur die Änderungen zu sehen, die vor dem Start festgeschrieben wurden.Alle festgeschriebenen Änderungen, die durch gleichzeitige Transaktionen vorgenommen werden, werden in einer SNAPSHOT
-Transaktion nicht angezeigt, solange diese aktiv ist.Die Änderungen werden für eine neue Transaktion sichtbar, sobald die aktuelle Transaktion entweder festgeschrieben oder vollständig zurückgesetzt wurde, jedoch nicht, wenn sie nur auf einen Sicherungspunkt zurückgesetzt wurde.
Die Isolationsstufe SNAPSHOT
wird auch als “concurrency” bezeichnet.
Note
|
Autonome Transaktionen
Änderungen durch autonome Transaktionen werden nicht im Kontext der Transaktion |
Snapshot-Transaktionen teilen
Mit SNAPSHOT AT NUMBER snaphot_number
kann eine SNAPSHOT
-Transaktion gestartet werden, die den Snapshot einer anderen Transaktion teilt.Mit dieser Funktion ist es möglich, parallele Prozesse (mit verschiedenen Anhängen) zu erstellen, die konsistente Daten aus einer Datenbank lesen.Beispielsweise kann ein Backup-Prozess mehrere Threads erstellen, die Daten parallel aus der Datenbank lesen.Oder ein Webdienst kann verteilte Unterdienste absetzen, die einige Verarbeitungsschritte parallel ausführen.
Alternativ kann diese Funktion auch über die API verwendet werden, indem das Transaktionsparameter-Pufferelement isc_tpb_at_snapshot_number
verwendet wird.
Die snapshot_number einer aktiven Transaktion kann mit RDB$GET_CONTEXT('SYSTEM', 'SNAPSHOT_NUMBER')
in SQL oder mit dem Transaktionsinformations-API-Aufruf mit fb_info_tra_snapshot_number
-Informations-Tag abgerufen werden.Die an die neue Transaktion übergebene snapshot_number muss eine Momentaufnahme einer derzeit aktiven Transaktion sein.
Note
|
Um eine stabile Ansicht zwischen Transaktionen zu teilen, muss die andere Transaktion auch die Isolationsstufe |
SET TRANSACTION SNAPSHOT AT NUMBER 12345;