アクセス・インテント -- 分離レベルおよび更新ロック
WebSphere® Application Server アクセス・インテント・ポリシーは、 ご使用の環境のリレーショナル・データベース全体にわたって CMP Bean データの分離レベルを定義する一貫性のある方法を提供します。
デプロイ済みアプリケーション内で、 アクセス・インテント・ポリシー concurrency definition および access type の組み合わせは、 データベース接続で Application Server が設定する分離レベル値を示します。 並行性およびアクセス・タイプについて詳しくは、『平行性制御』、および『アクセス・インテントおよび分離 (Access intent and isolation)』を参照してください。このプロパティーの組み合わせは、 JDBC 準備済みステートメントを介して Application Server がデータベースに渡す更新ロック・フラグも示します。
各データベースは、WebSphere Application Server ほど多くの分離レベル定義を提供しません。データベースは、わずか 3 つのタイプの 1 つとして分離レベルを定義します。 さらに、着信接続にデータベースが設定する分離レベルのタイプを示すのは、1 つのパラメーターのみです。 3 つのタイプはそれぞれ、各データベース・ベンダーによって規定されているように、異なる パラメーター値により表されます。 例えば、1 つのデータベースは RR (JDBC 反復可能読み取り) と分離レベルを定義し、別のデータベースは同じ分離レベルを RC (JDBC 読み取りコミット) と定義する場合があります。
こうした不整合のため、WebSphere Application Server はパラメーター値にアクセス・インテント・ポリシーをマップしません。 代わりに、Application Server はアクセス・インテント・ポリシーを、すべてのデータベース・ベンダーに共通な分離レベルのタイプにマップします。
アクセス・インテント・プロファイル | 分離レベル | 更新ロック実装 | |||||
---|---|---|---|---|---|---|---|
DB2® | Oracle* | SyBase | Informix® | Apache Derby | SQL Server | ||
wsPessimisticUpdate- Weakest LockAtLoad (デフォルト・ポリシー) | RR | RC | RR | RR | RR | RR | いいえ (*Oracle、はい) |
wsPessimisticUpdate | RR | RC | RR | RR | RR | RR | はい |
wsPessimisticRead | RR | RC | RR | RR | RR | RR | いいえ |
wsOptimisticUpdate | RC | RC | RC | RC | RC | RC | いいえ |
wsOptimisticRead | RC | RC | RC | RC | RC | RC | いいえ |
wsPessimisticUpdate No-Collisions | RC | RC | RC | RC | RC | RC | いいえ |
wsPessimisticUpdate- 排他的 | S | S | S | S | S | S | はい |
- RC = JDBC 読み取りコミット
- RR = JDBC 反復可能読み取り
- S = JDBC シリアライズ可能
- * Oracle は JDBC 反復可能読み取り (RR) をサポートしません。 したがって、wsPessimisticUpdate-weakestLockAtLoad および wsPessimisticUpdate は、 Oracle 上では wsPessismisticRead および wsOptimisticRead と同じように振る舞います。 Oracle の制約事項のため、OracleXADataSource JDBC クラスは S トランザクション分離レベルでは実行できません。したがって、このクラスを使用して、 Bean が S 分離でロードされるようにアクセス・インテント・ポリシーが構成されているエンタープライズ Bean を持つアプリケーションを実行することはできません。
- EJB メソッド・サポートごとのアクセス・インテント・ポリシーの設定は、 バージョン 6.0 では推奨されていません。 Bean 全体に対してのみアクセス・インテントを設定することをお勧めします。
- スナップショットによる読み取りコミット
- トランザクション・スナップショット (シリアライズ可能用)
Structured Query Language (SQL) のキーワードおよび制約事項
データベース | ロック更新に使用される SQL 構文 | 結合制限 | Order by 制限 | 副選択制限 | 集約制限 |
---|---|---|---|---|---|
DB2 | FOR UPDATE OF | 不可 | 不可 | 不可 | 不可 |
DB2 UDB for iSeries (V5R3 以前) | FOR UPDATE OF | 不可 | 制限 * 付きで許可 | 制限 * 付きで許可 | 不可 |
DB2 UDB for iSeries (V5R4 以降) | WITH RS/RR USE AND KEEP EXCLUSIVE LOCKS | 不可 | 制限 * 付きで許可 | 制限 * 付きで許可 | 不可 |
DB2 on z/OS® V8.x | WITH RS/RR USE AND KEEP UPDATE LOCKS | none | none | none | none |
DB2 UDB ワークステーション V8.2 | WITH RS/RR USE AND KEEP UPDATE LOCKS | none | none | none | none |
Oracle | FOR UPDATE | none | none | none | none |
Apache Derby | FOR UPDATE OF | 不可 | 不可 | 不可 | 不可 |
Informix | FOR UPDATE | 不可 | 不可 | 不可 | 不可 |
Sybase | FOR UPDATE | 不可 | 不可 | 不可 | 不可 |
Sqlserver | UPDLOCK | 不可 | 不可 | 不可 | 不可 |