14.2.7 SQL前処理時に必要なメモリ所要量の計算式
(1) ストアドプロシジャを使用しない場合に必要なメモリ所要量の求め方
ストアドプロシジャを使用しない場合,SQL前処理時に確保するメモリサイズは,次に示す計算式で求められます。
- 計算式
↑{ (2539+Si×70+Pi×20+Ti×980+Ci×68+Wi×818+Ki×416+Li×5 +Di×116+Ari×108+Gi×44+Ori×10+Sli×40+Upi×96+Fi×90 +Ti×Cwi×48+MAX(Pi,Wpi)×52+MAX(Ti,Sli−1)×96 +MAX(Ti×2,Wi)×24+MAX(Ti×3,Wi)×24 +MAX{MAX(Ti,Ori+Gi+Si+Fi),Sli−1}×24 }×1.2 ÷1024↑×CLS (単位:キロバイト)
Si:SQL文中の検索項目数
Pi:SQL文中の埋込み変数,?パラメタ又はSQLパラメタの数
Ti:SQL文中の表名の数
Ci:SQL文中の列名の数
Wi:SQL文中の論理演算子(AND及びOR)に出てくる述語の数
Ki:SQL文中の定数の数
Li:SQL文中の定数の長さの合計(単位:バイト)
Di:SQL文中に定義された格納条件の総数
Ari:SQL文中の四則演算及び連結演算の数
Gi:SQL文中のGROUP BY句に指定した列の数
Ori:SQL文中のORDER BY句に指定した列指定又はソート項目指定番号の数
Fi:SQL文中の集合関数及びスカラ関数の総数
Sli:SQL文中の問合せ指定の数
Upi:SQL文中の更新列数
Cwi:SQL文中のCASE式中のWHENの数
Wpi:SQL文中のWITH句に対応する変数の数
CLS:SQLオブジェクト内の一つのアクセスパスが生成される領域の数※
- 注※
-
SQLオブジェクト内の一つのアクセスパスが生成される領域の数は,次に示す計算式で求められます。
- 計算式
SELECT_APSLが適用されている場合※ a+b×4+c+d+e×2 SELECT_APSLが適用されていない場合※ a+b+c+d+e
- a:フロントエンドサーバ数
-
フロントエンドサーバ数は1を指定します。
- b:表数
-
表数は次に示す計算式で求めます。
実表数+相関名数
- c:集合演算サーバ数
-
集合関数の指定がある場合は1を,指定がない場合は0を指定します。
d:GROUP BY句,DISTINCT又はORDER BY句がある問合せ指定の数
- e:ジョインサーバ数
-
ジョインサーバ数は次に示す計算式で求めます。
b−SQL文中の問合せ指定の数
- 注※
-
SELECT_APSLが適用されているかどうかについては,アクセスパス表示ユティリティ(pdvwopt)を使用すると分かります。アクセスパス表示ユティリティ(pdvwopt)については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
(2) ストアドプロシジャを使用する場合に必要なメモリ所要量の求め方
ストアドプロシジャを使用する場合,SQL前処理時に確保するメモリサイズ(単位:キロバイト)は,「ストアドプロシジャを使用しない場合に必要なメモリ所要量の求め方」の計算式で求めた値に,ストアドプロシジャごとのプロシジャ制御用オブジェクト長を加算します。プロシジャ制御用オブジェクト長の計算式については,システム共通定義のpd_sql_object_cache_sizeオペランドの1ストアドプロシジャのプロシジャ制御用オブジェクト長を参照してください。1ストアドプロシジャのプロシジャ制御用オブジェクト長については,マニュアル「HiRDB システム定義」の「1ルーチンのルーチン制御用オブジェクト長の計算式」を参照してください。