6.25.2 ローカル作業表用バッファのページ数の見積もり
ここでは,ローカル作業表が使用するローカル作業表用バッファのページ数の見積もり方について説明します。ローカル作業表とは,リアルスレッドごとに作成される,リアルスレッド固有の作業表のことです。
ローカル作業表用バッファのページ数を求めたら,求めた値以上の値をサーバ定義のadb_dbbuff_wrktbl_clt_blk_numオペランドに指定してください。詳細については,「7.2.2 性能に関するオペランド(set形式)」のadb_dbbuff_wrktbl_clt_blk_numオペランドを参照してください。
また,必要に応じて次に示すオペランドおよびオプションにも指定してください。
-
クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランド
マニュアルHADB AP開発ガイドの性能に関するオペランドを参照してください。
-
エクスポートオプションadb_export_wrktbl_blk_num
マニュアルHADB コマンドリファレンスのadbexport(データのエクスポート)のadbexportコマンドの指定形式を参照してください。
ローカル作業表用バッファのページ数を求める計算式を次に示します。
- 計算式(単位:ページ数)
-
- 変数の説明
-
A:SQL文の実行時に作成される作業表の数×2
B:サーバ定義のadb_sys_uthd_numオペランドの値
SQL文の実行時に作成される作業表の数については,マニュアルHADB AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照して求めてください。作業表の数を求める際の注意点を次に示します。
-
作成される作業表の数は,マニュアルHADB AP開発ガイドの作成される作業表の個数で説明している例を参照して,SQL文ごとに求めてください。求めた数のうち,最大の数を代入して計算してください。
-
外への参照列を含む副問合せがある場合,マニュアルHADB AP開発ガイドの作成される作業表の個数で説明している例を参照して,作成される作業表の数を求めてください。求めた値をSとした場合,次に示す計算式で最終的に作成される作業表の数を計算します。
- 計算式(単位:個数)
-
- 変数の説明
-
T:サーバ定義のadb_sys_uthd_numオペランドの値
U:外への参照列として参照されている列を検索する問合せ指定の副問合せ評価前の結果の行数
-
ハッシュテーブルを使用した検索を実行する場合,次の計算式で求めた値を,SQL文の実行時に作成される作業表の数に加算してください。
ハッシュテーブルを使用した検索時に作成される作業表の数の求め方については,「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
SQL文の実行時に作成される作業表の数の計算例を次に示します。
- (例)
-
次に示すSQL文の実行時に作成される作業表の数を求めます。
SELECT "C1","C2","C3" FROM "T1" WHERE "C1"=ANY( ...1 SELECT COUNT(DISTINCT "C3") FROM "T2" WHERE "T1"."C1"="C2" GROUP BY "C1") ...2 ORDER BY "C1","C2","C3" ...3
- [説明]
-
-
限定述語のための作業表が作成されます。ただし,外への参照列("T1"."C1")を含む副問合せのため,作成される作業表の数は次の計算式で求めます。
-
GROUP BY句のソート処理で使うための作業表が作成されます。ただし,外への参照列("T1"."C1")を含む副問合せのため,作成される作業表の数は次の計算式で求めます。
-
ORDER BY句のソート処理で使う作業表が作成されます。この場合,作成される作業表は1つです。
上記のSQL文の実行時に作成される作業表の数は,1〜3の合計となります。
-