Zugriffsart - Isolationsstufe und Aktualisierungssperren
Mit den Richtlinien für Zugriffsarten (Access Intent) von WebSphere Application Server können Sie die Isolationsstufe für CMP-Bean-Daten für die unterschiedlichen relationalen Datenbanken in Ihrer Umgebung einheitlich definieren.
In einer implementierten Anwendungen zeigt die Kombination der Definition für gemeinsamen Zugriff und dem Zugriffstyp für die Richtlinie für Zugriffsarten die Isolationsstufe an, die WebSphere Application Server für die Datenbankverbindung festlegt. In den Artikeln "Steuerung des gemeinsamen Zugriffs" und "Zugriffsart und Isolation" finden Sie weitere Informationen zum gemeinsamen Zugriff und zu Zugriffstypen. Diese Eigenschaftenkombination gibt auch das Flag für Aktualisierungssperre an, das Application Server mit einer ausführbaren JDBC-Anweisung an die Datenbank übergibt.
Datenbanken unterstützen nicht so viele Definitionen von Isolationsstufen wie WebSphere Application Server. Datenbanken stehen für die Definition der Isolationsstufe drei Typen zur Auswahl. Nur ein Parameter gibt den Typ der Isolationsstufe an, den die Datenbanken für eingehende Verbindungen setzen. Jeder dieser drei Typen kann durch einen anderen Parameterwert dargestellt werden. Der jeweilige Wert wird vom Datenbanklieferanten vorgegeben. Eine Datenbank kann beispielsweise als Isolationsstufe RR (JDBC Repeatable Read, wiederholbarer JDBC-Lesevorgang) definieren, während eine andere Datenbank für dieselbe Isolationsstufe den Wert RC (JDBC Read committed, JDBC-Lesen mit COMMIT) definiert.
Aufgrund dieser Inkonsistenz ordnet WebSphere Application Server den Parameterwerten keine Richtlinien für Zugriffsarten zu. Stattdessen ordnet Application Server Richtlinien für Zugriffsarten den Typen von Isolationsstufen zu, die alle Datenbanklieferanten gleichermaßen verwenden.
Zugriffsartprofil | Isolationsstufe | Implementierung für Aktualisierungssperre | |||||
---|---|---|---|---|---|---|---|
DB2 | Oracle* | SyBase | Informix | Apache Derby | SQL Server | ||
wsPessimisticUpdate- WeakestLockAtLoad (Standardrichtlinie) | RR | RC | RR | RR | RR | RR | Nein (*Oracle, Ja) |
wsPessimisticUpdate | RR | RC | RR | RR | RR | RR | Ja |
wsPessimisticRead | RR | RC | RR | RR | RR | RR | Nein |
wsOptimisticUpdate | RC | RC | RC | RC | RC | RC | Nein |
wsOptimisticRead | RC | RC | RC | RC | RC | RC | Nein |
wsPessimisticUpdate No-Collisions | RC | RC | RC | RC | RC | RC | Nein |
wsPessimisticUpdate- Exclusive | S | S | S | S | S | S | Ja |
- RC = JDBC Read Committed (Festgeschriebene Daten lesen)
- RR = JDBC Repeatable Read (Wiederholbarer Lesevorgang)
- S = JDBC Serializable (Serialisierbar)
- * Oracle unterstützt nicht JDBC Repeatable Read (RR). Daher ist das Verhalten von wsPessimisticUpdate-weakestLockAtLoad und wsPessimisticUpdate unter Oracle mit wsPessismisticRead und wsOptimisticRead identisch. Aufgrund einer Einschränkung für Oracle kann die JDBC-Klasse OracleXADataSource jedoch nicht mit der Isolationsstufe S für Transaktionen ausgeführt werden. Sie können diese Klasse also nicht verwenden, um eine Anwendung mit Enterprise-Beans, deren Isolationsstufenattribut auf S gesetzt ist, auszuführen.
- Die Definition von Richtlinien für Zugriffsarten pro EJB-Mehtode wird ab Version 6.0 nicht weiter unterstützt. Es wird empfohlen, Zugriffsarten nur für die gesamte Bean zu definieren.
- Lesen mit COMMIT unter Verwendung von Momentaufnahmen (Read Committed with Snapshots)
- Momentaufnahme von Transaktionen (Transaction Snapshot; für Serialisierbar)
SQL-Schlüsselwörter und -Einschränkungen (Structured Query Language)
Datenbank | SQL-Syntax, die zum Sperren der Aktualisierung verwendet wird | Einschränkungen für JOIN | Einschränkungen für ORDER BY | Einschränkungen für SUBSELECT | Einschränkungen für AGGREGATION |
---|---|---|---|---|---|
DB2 | FOR UPDATE OF | Nicht zulässig | Nicht zulässig | Nicht zulässig | Nicht zulässig |
DB2 UDB for iSeries (V5R3 und früher) | FOR UPDATE OF | Nicht zulässig | Zulässig mit Einschränkungen* | Zulässig mit Einschränkungen* | Nicht zulässig |
DB2 UDB for iSeries (V5R4 und höher) | WITH RS/RR USE AND KEEP EXCLUSIVE LOCKS | Nicht zulässig | Zulässig mit Einschränkungen* | Zulässig mit Einschränkungen* | Nicht zulässig |
DB2 on z/OS Version 8.x | WITH RS/RR USE AND KEEP UPDATE LOCKS | Ohne | Ohne | Ohne | Ohne |
DB2 UDB Workstation Version 8.2 | WITH RS/RR USE AND KEEP UPDATE LOCKS | Ohne | Ohne | Ohne | Ohne |
Oracle | FOR UPDATE | Ohne | Ohne | Ohne | Ohne |
Apache Derby | FOR UPDATE OF | Nicht zulässig | Nicht zulässig | Nicht zulässig | Nicht zulässig |
Informix | FOR UPDATE | Nicht zulässig | Nicht zulässig | Nicht zulässig | Nicht zulässig |
Sybase | FOR UPDATE | Nicht zulässig | Nicht zulässig | Nicht zulässig | Nicht zulässig |
Sqlserver | UPDLOCK | Nicht zulässig | Nicht zulässig | Nicht zulässig | Nicht zulässig |