Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.2.3 ローカル作業表を作成するSQL文の実行時間を短縮する方法

ローカル作業表を作成するSQL文を実行する場合,ローカル作業表用バッファのページ数を増やすことで,SQL文の実行時間を短縮できることがあります。

ローカル作業表を作成するSQL文については,マニュアル「HADB AP開発ガイド」の「APの性能向上に関する設計」の「作業表が作成されるSQLを実行する際の考慮点」の「SQLを実行した場合に作成される作業表について」を参照してください。

adbstatコマンドで出力される情報によって,チューニング方法が異なります。

まずは,コネクションの稼働情報を確認して,チューニングを行ってください。そのあとで,特定のSQL文の実行時間を短縮したい場合は,SQL文の統計情報を確認して,チューニングを行ってください。

参考

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドを指定していないコネクションの場合は,HADBサーバの稼働中にadbmodbuffコマンドで,サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数を変更できます。「10.11.1 ローカル作業表用バッファを変更する方法」を参照してください。

〈この項の構成〉

(1) コネクションの稼働情報によるローカル作業表を作成するSQL文の実行時間の短縮

手順

  1. ローカル作業表用バッファからのファイル書き込み回数を確認する

    adbstatコマンドを実行して出力される「コネクションの稼働情報」のうち,次に示す情報を確認してください。

    • DBbuff_wrktbl_clt_write_cnt(ローカル作業表用バッファからのファイル書き込み回数)

  2. adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を見直す

    手順1.で確認したDBbuff_wrktbl_clt_write_cntに出力された値が1以上の場合,ローカル作業表用バッファからファイルへの書き込みが発生しています。クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を大きくしたあとで,ローカル作業表を作成するSQL文を再実行してください。そのあとで,手順1.を実施してDBbuff_wrktbl_clt_write_cntに出力された値が減っているかどうかを確認してください。

  3. 手順1.と手順2.を繰り返す

    手順1.と手順2.を繰り返して,DBbuff_wrktbl_clt_write_cntに出力された値が0になるまで調整すると,ローカル作業表を作成するSQL文の実行時間を短縮できることがあります。

(2) SQL文の統計情報によるローカル作業表を作成するSQL文の実行時間の短縮

手順

  1. ローカル作業表用バッファからのファイル書き込み回数を確認する

    adbstatコマンドを実行して出力される「SQL文の統計情報」のうち,次に示す情報を確認してください。

    • DBbuff_wrktbl_clt_write_cnt(ローカル作業表用バッファからのファイル書き込み回数)

    • DBbuff_wrktbl_clt_put_cnt(ローカル作業表用バッファへの書き込み回数)

  2. adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を見直す

    手順1.で確認したDBbuff_wrktbl_clt_write_cntとDBbuff_wrktbl_clt_put_cntの情報の関係が,次に示す計算式を満たしている場合,ローカル作業表用バッファからファイルへの書き込みが多発しているおそれがあります。

    計算式

    DBbuff_wrktbl_clt_write_cntに出力された値 > DBbuff_wrktbl_clt_put_cntに出力された値÷2

    計算式を満たしている場合,クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を大きくしたあとで,ローカル作業表を作成するSQL文を再実行してください。そのあとで,手順1.を実施してDBbuff_wrktbl_clt_write_cntに出力された値が,計算式を満たさないことを確認してください。

  3. 手順1.と手順2.を繰り返す

    手順1.と手順2.を繰り返して,DBbuff_wrktbl_clt_write_cntに出力された値が計算式を満たさなくなるまで調整すると,ローカル作業表を作成するSQL文の実行時間を短縮できることがあります。