Freigeben über


Transaktions-ODBC

Bei einer Transaktion handelt es sich um eine Arbeitseinheit, die als einzelner, atomer Vorgang durchgeführt wird. Das heißt, der Vorgang ist erfolgreich oder schlägt als Ganzes fehl. Ziehen Sie z. B. die Übertragung von Geld von einem Bankkonto auf ein anderes in Betracht. Dies umfasst zwei Schritte: Das Zurückziehen des Geldes vom ersten Konto und die Einzahlung im zweiten. Es ist wichtig, dass beide Schritte erfolgreich sind; es ist nicht akzeptabel, dass ein Schritt erfolgreich ist und der andere fehlschlägt. Eine Datenbank, die Transaktionen unterstützt, kann dies garantieren.

Transaktionen können abgeschlossen werden, indem sie entweder zugesichert oder zurückgesetzt werden. Wenn eine Transaktion zugesichert wird, werden die in dieser Transaktion vorgenommenen Änderungen dauerhaft vorgenommen. Wenn eine Transaktion zurückgesetzt wird, werden die betroffenen Zeilen an den Status zurückgegeben, in dem sie sich befanden, bevor die Transaktion gestartet wurde. Um das Beispiel für die Kontoübertragung zu erweitern, führt eine Anwendung eine SQL-Anweisung aus, um das erste Konto und eine andere SQL-Anweisung auf das zweite Konto zu belasten. Wenn beide Anweisungen erfolgreich ausgeführt werden, wird die Transaktion von der Anwendung ausgeführt. Wenn eine der beiden Anweisungen aus irgendeinem Grund fehlschlägt, setzt die Anwendung die Transaktion zurück. In beiden Fällen garantiert die Anwendung einen konsistenten Zustand am Ende der Transaktion.

Eine einzelne Transaktion kann mehrere Datenbankvorgänge umfassen, die zu unterschiedlichen Zeiten auftreten. Wenn andere Transaktionen zugriff auf die Zwischenergebnisse hatten, können sich die Transaktionen gegenseitig stören. Angenommen, eine Transaktion fügt eine Zeile ein, eine zweite Transaktion liest diese Zeile und die erste Transaktion wird zurückgesetzt. Die zweite Transaktion enthält jetzt Daten für eine Zeile, die nicht vorhanden ist.

Um dieses Problem zu lösen, gibt es verschiedene Schemas, um Transaktionen voneinander zu isolieren. Transaktionsisolation wird in der Regel durch Sperren von Zeilen implementiert, die die Gleichzeitige Verwendung derselben Zeile ausschließen. In einigen Datenbanken kann das Sperren einer Zeile auch andere Zeilen sperren.

Mit erhöhter Transaktionsisolation wird die Parallelität reduziert , oder die Möglichkeit von zwei Transaktionen, die gleichen Daten gleichzeitig zu verwenden. Weitere Informationen finden Sie unter Festlegen der Transaktionsisolationsstufe.

In diesem Abschnitt werden die folgenden Themen behandelt: