内容/目次
更新ログ |
(2007/10/01 17:11) データソースのカスタムプロパティー(webSphereDefaultIsolationLevel)による分離レベルの指定方法を追加。
(2008/06/24 10:29) URLを修正。
(2008/07/04 17:07) アプリケーションのアセンブルに関するリンク先を更新しました。
WAS(WebSphere Application Server) V4以前とWAS V5*では、デフォルトIsolation Levelの仕様が変更されています。
*WASV5.0.2, 5.1, 6.0, 6.1(2007.09.21現在)
WAS V4の場合 DB2での設定:CS(Cursor Stability) [ISO標準:READ_COMMITED ]
WAS V5,V6の場合 DB2での設定:RS(Read Stability) [ISO標準:REPEATABLE_READ ]
DB2 UDBのIsolation Levelのデフォルトは CS ですが、アプリケーション側での設定が優先されます。
【対象製品/環境】
WAS V5,V6上のアプリケーションでDB2への接続のためにDataSourceを使用している環境
【詳細説明】
WASのデフォルトIsolation Levelの仕様が変更され、WAS V5ではRSとなりました。
この仕様変更に伴い、WAS V4からWAS V5へ明示的に分離レベルを指定していないアプリケーションを移行した場合、1つ高いレベルのIsolationとなり、アプリケーションがより多くのロックを保持することによりロック数が増え、パフォーマンス劣化などの問題が発生する可能性があります。分離レベル対応表
DB2 | JDBCトランザクションIsolation Level | ANSI/ISO SQL標準 | |
UR: Uncommited Read | 未コミット読み取り | TRANSACTION_READ_UNCOMMITED | 未コミット読み取り(Uncommited Read) |
CS: Cursor Stability | カーソル固定 | TRANSACTION_READ_COMMITED | コミット読み取り(Commited Read) |
RS: Read Stability | 読み取り固定 | TRANSACTION_REPEATABLE_READ | 反復可能読み取り(RR) |
RR: Repeatable Read | 反復可能読み取り | TRANSACTION_SERIALIZABLE | 直列化可能(Selializable) |
【参考情報】
WAS V5のデフォルト分離レベルの仕様変更に関しては、
WAS V5アナウンスメント・テクニカル・ワークショップ資料 『Persistence Manager』
WebSphere基幹システム構築ワークショップ資料 『Data Access』P11-12
をご参照ください。
以下、Webモジュールの分離レベル指定方法、現在の分離レベル確認方法等を追記します。
【明示的に分離レベルを指定する方法】-WAS/WSAD-
WASのWebコンテナ上のアプリケーションでデータベース接続のためにDataSourceを使用している環境でISOLATIONをデフォルトから変更したい場合には、以下の方法をとります。
(1) アプリケーションのアセンブル時(WAS)
- アプリケーション・アセンブリー・ツール(AAT) <- WAS V5.0の場合
アセンブリー・ツールキット(ASTK) <- WAS V5.1の場合
(2 )開発時(WSAD)
- 該当プロジェクトのDeployment Descripterエディタの[参照]タブの[リソース]ページの分離レベルにて設定可能。
Deployment Descripterエディタのキャプチャー
(3) 該当アプリケーションが使用するデータソースのカスタム・プロパティーの設定(WAS管理コンソールから)
- PK05841適用後(V6.0.2 AND V5.1.1.6)に設定可能。
プロパティー名は、webSphereDefaultIsolationLevel。
なお、WASのバージョン毎にインフォメーションセンターのリンク先が異なるため、このサイト( http://www-306.ibm.com/software/webservers/appserv/was/library/ )からお使いのバージョンを選択してください。
バージョンを選び、インフォメーションセンターのトップページを開いたら、エディションを選択し、以下のカテゴリーをたどってください。
- V6.0/V6.1
[アプリケーションの開発とデプロイ]->[WebSphereアプリケーションの開発]->[データ・アクセス・リソース]->[データ・アクセス・アプリケーションのアセンブル]->[リソース参照の作成または変更]
V5.1
[アセンブル]->[リソース]->[データ・アクセス]->[リソース参照の作成または変更]
V5.0
[機能別全トピック]->[リソース]->[データ・アクセス]->[アプリケーションからのデータへのアクセス]->[データ・アクセス・アプリケーションの開発]->[リレーショナル・アクセスのリソース参照によるデータ・ソースのルックアップ]->[分離レベルおよびリソース参照]->[リソース参照の作成または変更]
(3) の詳細は、以下のTechnote『Changing the default isolation level for non-CMP applications and describing how to do so using a new custom property webSphereDefaultIsolationLevel (Link)
』をご参照ください。 【分離レベル確認方法 -DB2編】
DB2より実行されているSQLの分離レベルは、ステートメント・レベルのイベント・モニターで確認します。
(1) ステートメント・レベルのイベント・モニターを設定
$db2 update monitor switches using STATEMENT ON
$db2 create event monitor モニター名 for statements write to file 'C:\EM\STMT'
$db2 set event monitor モニター名 state = 1
(2) WebアプリケーションからSQLを実行
(3) ステートメント実行に使用されたパッケージ名を確認
- $db2 set event monitor モニター名 state = 0
$db2evmon -path C:\EM\STMT > emstmt.txt
- [出力例] DB2 V8.1環境でテスト
- 8) Statement Event ...
Appl Handle: 11
Appl Id: *LOCAL.DB2.014608063132
Appl Seq number: 0002
Record is the result of a flush: FALSE
-------------------------------------------
Type : Dynamic
Operation: Close
Section : 4
Creator : NULLID
Package : SYSSN300
Consistency Token : SYSLVL01
Package Version ID :
Cursor : SQL_CURSN400C4
Cursor was blocking: TRUE
Text : SELECT * FROM STAFF WHERE ID < 100
- - DB2 V8.1, V8.2, V9.1の場合
パッケージ名 SYS??xyy
xがIsolation Levelを示しています。
0 = NC(コミットなし), 1 = UR, 2 = CS, 3 = RS, 4 = RR
- DB2 V7.2の場合
パッケージ名 SQLL?yxx
yがIsolation Levelを示しています。
0 = CS, 2 = UR, 3 = RS, 4 = RR
- (3) の出力例では、Isolation Levelは、RSであることがわかります。
添付資料
文書情報
有効期限: 2012年4月9日
発表日: 2004/04/16
資料番号: DM-04-025
掲載内容について
当サイトは、お客様の問題解決のためのヒントとしてご利用ください。 当サイトにおける記載内容は、お客様固有の問題に対し、適切であるかどうか、また、正確であるかどうかは十分検証されていません。 結果について、いかなる保証も責任も負いかねますので、あらかじめご了承ください。
商標について
IBM、IBM(logo)、developerWorks、Lotus、PartnerWorld、Rational、Tivoli、 WebSphereはIBM Corporationの商標です。 他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。