Da die Isolationsstufe festlegt, wie Daten von anderen Prozessen während des Zugriffs auf die
Daten isoliert werden, sollten Sie eine Isolationsstufe auswählen, die die Anforderungen des gemeinsamen
Zugriffs und der Datenintegrität angemessen gegeneinander abwägt.
Informationen zu dieser Task
Die Isolationsstufe, die Sie angegeben, gilt für die Dauer der UOW (Unit of Work,
Arbeitseinheit). Die folgenden heuristischen Methoden können verwendet werden, um die Isolationsstufe
zu bestimmen, die zum Kompilieren einer SQL- oder XQuery-Anweisung verwendet wird:
- Für statisches SQL:
- Wenn eine isolation-klausel in der Anweisung angegeben wird, wird der Wert dieser Klausel verwendet.
- Wenn keine isolation-klausel in der Anweisung angegeben wird, wird die Isolationsstufe
verwendet, die für das Paket angegeben war, als das Paket an die Datenbank gebunden (BIND) wurde.
- Für dynamisches SQL:
- Wenn eine isolation-klausel in der Anweisung angegeben wird, wird der Wert dieser Klausel verwendet.
- Wenn keine isolation-klausel in der Anweisung angegeben wird und die Anweisung
SET CURRENT ISOLATION in der aktuellen Sitzung abgesetzt wurde, wird der Wert des Sonderregisters CURRENT
ISOLATION verwendet.
- Wenn keine isolation-klausel in der Anweisung angegeben wird und die Anweisung
SET CURRENT ISOLATION in der aktuellen Sitzung nicht abgesetzt wurde, wird die Isolationsstufe verwendet, die
für das Paket angegeben war, als das Paket an die Datenbank gebunden (BIND) wurde.
- Für statische oder dynamische XQuery-Anweisungen legt die Isolationsstufe der Umgebung die
Isolationsstufe fest, die bei der Auswertung des XQuery-Ausdrucks verwendet wird.
Hinweis: Viele kommerziell geschriebene Anwendungen bieten eine Methode zur Auswahl der Isolationsstufe. Informationen
dazu finden Sie in der Dokumentation zur jeweiligen Anwendung.
Die Isolationsstufe kann auf
verschiedene Arten angegeben werden.
Prozedur
- Auf Anweisungsebene oder Unterauswahlebene:
Hinweis: Isolationsstufen für XQuery-Anweisungen können nicht auf Anweisungsebene angegeben werden.
Verwenden Sie die Klausel WITH. Die Option WITH UR gilt nur für Operationen
mit Lesezugriff. Anderenfalls wird die Anweisung automatisch von UR in CS geändert.
Diese Isolationsstufe setzt die Isolationsstufe außer Kraft, die für das Paket angegeben ist, in dem die
Anweisung enthalten ist. Für die folgenden SQL-Anweisungen können Sie eine Isolationsstufe angeben:
- DECLARE CURSOR
- Searched DELETE
- INSERT
- SELECT
- SELECT INTO
- Searched UPDATE
- Für dynamisches SQL in der aktuellen Sitzung:
Verwenden Sie die Anweisung SET CURRENT ISOLATION, um die Isolationsstufe für dynamisches SQL festzulegen,
die innerhalb einer Sitzung abgesetzt wird. Durch die Ausführung dieser Anweisung wird das Sonderregister
CURRENT ISOLATION auf einen Wert gesetzt, der die Isolationsstufe für alle dynamischen SQL-Anweisungen
angibt, die innerhalb der aktuellen Sitzung abgesetzt werden. Sobald es festgelegt ist, gibt das
Sonderregister CURRENT ISOLATION die Isolationsstufe für alle nachfolgenden dynamischen SQL-Anweisungen an,
die innerhalb der Sitzung kompiliert werden, unabhängig davon, welches Paket die Anweisung abgesetzt hat. Diese Isolationsstufe ist wirksam, bis die Sitzung beendet wird oder bis SET CURRENT ISOLATION ...Die Anweisung RESET wird ausgegeben.
- Beim Vorkompilieren oder Binden:
Für eine Anwendung, die in einer unterstützten kompilierten Sprache geschrieben ist, verwenden Sie die
Option ISOLATION der Befehle PREP oder BIND. Sie können die Isolationsstufe auch über die API sqlaprep bzw. sqlabndx angeben.
- Wenn Sie beim Vorkompilieren eine Bindedatei erstellen, wird die Isolationsstufe in
der Bindedatei gespeichert. Wenn Sie beim Binden keine Isolationsstufe angeben, wird standardmäßig die beim
Vorkompilieren verwendete Isolationsstufe verwendet.
- Wenn Sie keine Isolationsstufe angeben, wird die Standardisolationsstufe 'Cursorstabilität' (CS) verwendet.
Führen Sie zur Feststellung der Isolationsstufe eines Pakets die folgende Abfrage aus:
select isolation from syscat.packages
where pkgname = 'pkgname'
and pkgschema = 'pkgschema'
Dabei ist
paketname der
nicht qualifizierte Name des Pakets und
paketschema der Schemaname des Pakets. Beide Namen müssen vollständig in Großbuchstaben angegeben werden.
- Bei der Arbeit mit JDBC oder SQLJ zur Laufzeit:
Hinweis: JDBC und SQLJ werden mit der Befehlszeilenschnittstelle auf Db2® -Servern implementiert. Dies bedeutet, dass sich die db2cli.ini -Einstellungen auf das auswirken können, was mit JDBC und SQLJ geschrieben und ausgeführt wird.
Zur Erstellung eines Pakets (und zur Angabe der zugehörigen Isolationsstufe) in SQLJ verwenden Sie die
SQLJ-Profilanpassungsfunktion (Befehl db2sqljcustomize).
- Über CLI oder ODBC zur Laufzeit:
Verwenden Sie den Befehl CHANGE ISOLATION LEVEL. Mit
DB2 Call-level Interface (CLI)
können Sie die Isolationsstufe bei der CLI-Konfiguration ändern. Verwenden Sie während der Ausführung die
Funktion SQLSetConnectAttr mit dem Attribut SQL_ATTR_TXN_ISOLATION, um die
Transaktionsisolationsstufe für die aktuelle Verbindung zu festzulegen, auf die durch das Argument
ConnectionHandle verwiesen wird. Sie können auch das Schlüsselwort TXNISOLATION
in der Datei db2cli.ini verwenden.
- Auf Datenbankservern, die REXX unterstützen:
Wenn eine Datenbank erstellt wird, werden mehrere Bindedateien, die die verschiedenen Isolationsstufen für SQL in REXX unterstützen, an die Datenbank gebunden. Andere Befehlszeilenprozessorpakete (CLP-Pakete) werden ebenfalls an die Datenbank
gebunden, wenn eine Datenbank erstellt wird.
REXX und der CLP stellen eine Verbindung zu einer Datenbank mit der Standardisolationsstufe CS her. Durch eine Änderung dieser Isolationsstufe wird der Status der Verbindung nicht geändert.
Um die Isolationsstufe zu bestimmen, die von einer REXX-Anwendung verwendet wird, überprüfen Sie den Wert der vordefinierten REXX-Variablen SQLISL. Der Wert wird jedes Mal aktualisiert, wenn der Befehl CHANGE ISOLATION LEVEL ausgeführt wird.
- Ändern der für neue Sitzungen verwendeten Standardisolationsstufe:
Die für dynamisches SQL in einer neuen Sitzung verwendete normale Standardisolationsstufe wird durch die Isolationsstufe des in dieser Sitzung
verwendeten Pakets festgelegt. Dieser Wert kann während der Verarbeitung von der Anwendung geändert werden; darüber hinaus kann der Datenbankadministrator die
Standardisolationsstufe außerhalb der Anwendung durch Implementierung eines der folgenden Elemente ändern: