スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

16.2.7 SQL前処理時に必要なメモリ所要量の計算式

<この項の構成>
(1) ストアドプロシジャを使用しない場合に必要なメモリ所要量の求め方
(2) ストアドプロシジャを使用する場合に必要なメモリ所要量の求め方

(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 Version 8 コマンドリファレンス」を参照してください。

(2) ストアドプロシジャを使用する場合に必要なメモリ所要量の求め方

ストアドプロシジャを使用する場合,SQL前処理時に確保するメモリサイズ(単位:キロバイト)は,「(1)ストアドプロシジャを使用しない場合に必要なメモリ所要量の求め方」の計算式で求めた値に,ストアドプロシジャごとのプロシジャ制御用オブジェクト長を加算します。プロシジャ制御用オブジェクト長の計算式については,システム共通定義のpd_sql_object_cache_sizeオペランドの1ストアドプロシジャのプロシジャ制御用オブジェクト長を参照してください。1ストアドプロシジャのプロシジャ制御用オブジェクト長については,マニュアル「HiRDB Version 8 システム定義」の「1ルーチンのルーチン制御用オブジェクト長の計算式」を参照してください。