Isolationsstufen für Transaktionen angeben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Transaktionen verwalten


Die Isolationsstufe einer Transaktion bestimmt, wie eine Transaktion mit anderen, gleichzeitig stattfindenden Transaktionen kommuniziert, wenn diese mit denselben Tabellen arbeiten. Insbesondere regelt sie, wie viel eine Transaktion von den Änderungen "sieht", die andere Transaktionen an einer Tabelle vornehmen.

Jeder Servertyp unterstützt unterschiedliche Werte für mögliche Transaktions-Isolationsstufen. Es gibt drei mögliche Transaktions-Isolationsstufen:

  • DirtyRead: Ist die Isolationsstufe gleich DirtyRead, sehen Ihre Transaktionen alle Änderungen, die von anderen Transaktionen vorgenommen werden, auch wenn diese noch nicht festgeschrieben wurden. Nicht festgeschriebene Änderungen sind nicht permanent und können jederzeit rückgängig gemacht werden. Dieser Wert stellt die geringste Isolation dar und wird von vielen Datenbankservern nicht unterstützt (wie beispielsweise Oracle, Sybase, MS-SQL oder InterBase).
  • ReadCommitted: Ist die Isolationsstufe gleich ReadCommitted, werden nur festgeschriebene Änderungen von anderen Transaktionen sichtbar gemacht. Diese Einstellung schützt Ihre Transaktion zwar davor, nicht festgeschriebene Änderungen zu sehen, die möglicherweise rückgängig gemacht werden, aber Sie erhalten unter Umständen dennoch eine inkonsistente Ansicht des Datenbankstatus, wenn eine andere Transaktion festgeschrieben wird, während Sie noch lesen. Diese Stufe wird für alle Transaktionen unterstützt, außer für lokale Transaktionen, die von der BDE verwaltet werden.
  • RepeatableRead: Ist die Isolationsstufe gleich RepeatableRead, sieht Ihre Transaktion garantiert einen konsistenten Status der Datenbankdaten. Ihre Transaktion sieht eine einzige Momentaufnahme der Daten. Sie sieht keine nachfolgend vorgenommenen Änderungen der Daten durch andere, gleichzeitig stattfindende Transaktionen, selbst wenn diese festgeschrieben werden. Diese Isolationsstufe garantiert, dass sich die Ansicht dieses Datensatzes nicht ändert, nachdem Ihre Transaktion einen Datensatz gelesen hat. Auf dieser Stufe ist Ihre Transaktion am besten von Änderungen durch andere Transaktionen isoliert. Diese Stufe wird von einigen Servern nicht unterstützt, wie beispielsweise Sybase und MS-SQL, und steht nicht für lokale Transaktionen zur Verfügung, die von der BDE verwaltet werden.

Darüber hinaus erlaubt Ihnen TSQLConnection, datenbankspezifische benutzerdefinierte Isolationsstufen anzugeben. Benutzerdefinierte Isolationsstufen werden durch den Treiber dbExpress definiert. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Treiber.

Anmerkung:  Eine detaillierte Beschreibung der Implementierung der verschiedenen Isolationsstufen finden Sie in der Dokumentation zu Ihrem Server.

TDatabase und TADOConnection ermöglichen Ihnen, die Transaktions-Isolationsstufe anzugeben, indem Sie die Eigenschaft TransIsolation setzen. Falls Sie TransIsolation auf einen vom Datenbankserver nicht unterstützten Wert setzen, erhalten Sie die nächsthöhere Isolationsstufe (falls diese unterstützt wird). Wird keine höhere Ebene unterstützt, erzeugt die Verbindungskomponente einen Fehler, wenn Sie versuchen, eine Transaktion zu starten.

Bei Verwendung von TSQLConnection wird die Transaktions-Isolationsstufe durch das Feld IsolationLevel des Transaktionsdeskriptors gesteuert.

Bei Verwendung von InterBase Express wird die Transaktions-Isolationsstufe durch einen Transaktionsaktionsparameter gesteuert.

Siehe auch