IBM Support

[Db2] アプリケーションが実行している SQL の分離レベルを確認する方法

Question & Answer


Question

SQL ステートメントがどの分離レベルで実行されているか確認する方法はありますか。

Answer

SQL ステートメントは各アプリケーションが指定した分離レベルで実行されます。

SQL ステートメントの分離レベルは、パッケージ・キャッシュの内容から MON_GET_PKG_CACHE_STMT 表関数を使って確認できます。
ただし、該当の SQL がデータベースの活動化以降少なくとも1回は実行され、かつパッケージ・キャッシュから削除されていない状態であることが必要です。
実行例:
$ db2 "SELECT SECTION_TYPE, PACKAGE_SCHEMA, PACKAGE_NAME, EFFECTIVE_ISOLATION, SUBSTR(STMT_TEXT,1,100) as STMT_TEXT FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-2)) as T1 WHERE STMT_TEXT LIKE 'SELECT COUNT(*)%'"

SECTION_TYPE PACKAGE_SCHEMA  PACKAGE_NAME EFFECTIVE_ISOLATION STMT_TEXT
------------ --------------- ------------ ------------------- -----------------------------------
D            -               -            CS                  SELECT COUNT(*) FROM SYSCAT.TABLES
S            NULLID          DB2L2K1S     UR                  SELECT COUNT(*) INTO :H00197 FROM   SYSCAT.INDEXES

  2 レコードが選択されました。
EFFECTIVE_ISOLATION 列の内容が、実行されている分離レベルを示しています。
SECTION_TYPE 列の内容は、'S' が静的 SQL、'D' は動的 SQL を意味します。

関連情報
MON_GET_PKG_CACHE_STMT 表関数 - パッケージ・キャッシュ・ステートメント・メトリックの取得
pckcachesz - パッケージ・キャッシュ・サイズ構成パラメーター
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkcAAE","label":"Compiler"},{"code":"a8m0z00000006seAAA","label":"Monitors"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
31 August 2023

UID

swg21698184