* FROM TABLE(MON_GET_TABLE('DB2INST1','',-2)) AS T • でも、すごく列が多いので、列を指定して絞らないと、超横長の結果が... そこで... db2perf_browseを利用 – 2011年5月の"DB2 chat with the lab"で説明された便利ツール • 列と行を入れ替えて表示するストアドプロシージャ 例) > call db2perf_browse('MON_GET_BUFFERPOOL(''IBMDEFAULTBP'',null)') > call db2perf_browse('MON_GET_TABLE(''DB2INST1'',null,-2)')
(狭義の)トランザクション≒コミット発行数+ロールバック発行数 エレメントで計算するには、以下の2つを組み合わせて... – TOTAL_APP_COMMITS: 総COMMIT数 – TOTAL_APP_ROLLBACKS:総ROLLBACK数 上記にはDB2システムが内部で発行したSQLの分も含まれる – ユーザSQLのみをカウントしたい場合は、以下のようにMON_GET_SERVICE_SUBCLASS でスーパークラスに'SYSDEFAULTUSERCLASS'を指定してデータを取り出す SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS+TOTAL_APP_ROLLBACKS FROM SYSIBMADM.MON_DB_SUMMARY SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS FROM TABLE(MON_GET_SERVICE_SUBCLASS('SYSDEFAULTUSERCLASS','',-2)) AS T MON_DB_SUMMARYは良く使う 情報がまとめられた便利なビュー
STMT_EXEC_TIME:クエリーを実行した時間 – EXECUTABLEID:SQL毎に付けられるID(ハッシュ値) をベースに検索 • 以下の例は、同じクエリーの実行時間をSUMで足して、遅いもの順でトップ10を出力した例 • EXECUTABLEIDではSQLが分からないので、以下のようにして情報を出力 EXECUTABLEIDを第二引数に指定。(xを付けるのをお忘れ無く) SELECT SUM(STMT_EXEC_TIME) AS TOTAL_EXEC_TIME, SUM(TOTAL_ACT_WAIT_TIME) AS TOTAL_WAIT_TIME, EXECUTABLE_ID FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL, NULL, -2)) AS T GROUP BY EXECUTABLE_ID ORDER BY TOTAL_EXEC_TIME DESC FETCH FIRST 10 ROWS ONLY call db2perf_browse('MON_GET_PKG_CACHE_STMT(NULL,x''010000000000000084000 0000000000000000000020020120223161303238342'',NULL,-2)');