Füge ich Read fest, das nach SET TRANSACTION ISOLATION LEVEL SERIALIZABLE festgeschrieben wurde?


9

In einer gespeicherten Prozedur habe ich Folgendes: (SQL Server 2008)

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
 BEGIN TRANSACTION getStuff
 BEGIN TRY 
    /*  some selects, updates, etc, etc. */
    ....
    COMMIT TRANSACTION getStuff
 END TRY
 BEGIN CATCH 
   ...
 END CATCH

Da dies transaktionsbasiert ist, dachte ich, dass der Rest der Datenbankverbindungen von SERIALIZABLE nicht betroffen sein wird.

Muss ich implizit die Isolationsstufe festlegen, um nach meinem Festschreiben festgeschrieben zu lesen? Beeinträchtigt dies andere Verbindungen zwischen meinem Anwendungsserver und dem Datenbankserver?

Antworten:


6

Der Befehl lautet TRANSACTION ISOLATION LEVELnicht SERVER ISOLATION LEVEL. Es wird nur die Isolationsstufe für den Transaktionsbereich geändert.


5

Nein, Sie müssen die Isolationsstufe nicht implizit zurücksetzen, um festgeschrieben zu lesen.

Aus Büchern online .

Wenn Sie in einer gespeicherten Prozedur oder einem Trigger SET TRANSACTION ISOLATION LEVEL ausgeben, wird die Isolationsstufe auf die Stufe zurückgesetzt, die beim Aufrufen des Objekts wirksam war, wenn das Objekt die Kontrolle zurückgibt. Wenn Sie beispielsweise REPEATABLE READ in einem Stapel festlegen und der Stapel dann eine gespeicherte Prozedur aufruft, die die Isolationsstufe auf SERIALIZABLE setzt, wird die Einstellung für die Isolationsstufe auf REPEATABLE READ zurückgesetzt, wenn die gespeicherte Prozedur die Kontrolle an den Stapel zurückgibt.


3

Der Befehl, den Sie gebucht haben, führt die Transaktion im SP mit aus TRANSACTION ISOLATION LEVEL SERIALIZABLE. Andere Verbindungen verwenden standardmäßig die Standardisolationsstufe - Lese festgeschrieben (sofern nicht explizit eine andere Isolationsstufe angegeben ist).

Es gibt eine ausgezeichnete Reihe von Paul White - SQL Server-Isolationsstufen: Eine Reihe, die Ihnen hilft, genau zu verstehen, was verschiedene Isolationsstufen bedeuten und tun, wenn sie verwendet werden.


-3

Ein ziemlich neuer Algorithmus, der die meisten Nachteile der vorherigen Ansätze vermeidet. Es verwendet einen optimistischen Ansatz, der es Transaktionen ermöglicht, ohne zu blockieren. Wenn eine Transaktion festgeschrieben werden soll, wird sie überprüft und abgebrochen, wenn die Ausführung nicht serialisierbar war. Weitere Details zu allen Ansätzen finden Sie unter: http://writeulearn.com/relational-database-transactions/


Dies scheint keine Antwort auf die Frage zu sein ...
RDFozz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.