付録C.2 SQLオブジェクト用バッファ長(pd_sql_object_cache_size)の見積もり式
計算式で使用する変数については(3)を参照してください。
- 〈この項の構成〉
(1) 1SQL文のSQLオブジェクト長の計算式
1SQL文のSQLオブジェクト長は次に示す計算式から求めます。
〈計算式〉
1SQL文のSQLオブジェクト長(単位:キロバイト)= ↑{ 1600+46×RCN+394×Si+24×Pi+2058×Ti+76×Ti×Di+80×Ci+40×Ii+586×Wi +24×Ki+Li+8×TCi+656×Di+116×Ti×QX+28×QX+200×Ai+48×nFF +100×nFP+148×nFC+712×nPFF+32×(nAT+nPAT)+20×nCAT +28×(nAF+nCAF)+20×(nAA+nPAA+nCAA)+1057×nSPA+120×nSPP +287×nSFF+8×nSFP+813×nJFC+20×nJFP トリガを使用する場合に加算します。 +1057×nTR+120×(nTSN+nTSO)+20×(nTCN+nTCO) 参照制約を使用する場合に加算します。 +760+376×RCC+1880×RCT 集合演算を使用する場合に加算します。 +64×Ui マトリクス分割をする場合に加算します。 +16×Tmi+16×Tmi×Di 行値構成子を指定する場合に加算します。 +384×Wri+32×QXs 検査制約を使用する場合に加算します。 +72×CDi+88 SQL実行時の中間結果情報を取得する場合に加算します。 +24×PIX+192×Ti+68×QX+96 LIMIT句を指定する場合に加算します。 +160 改竄防止表を定義する場合に加算します。 +200 SET SESSION AUTHORIZATION文を使用する場合に加算します。 +32 リストから受け渡し値を取得を使用する場合に加算します。 +32×ALP XML型を使用する場合に加算します。 +36×Ti+4240×XQX+8×XQX×nURI 文字集合を使用する場合に加算します。 +80×TCCi+88×sRi 順序数生成子を使用する場合に加算します。 +168×nSQ データ圧縮機能を使用する場合に加算します。 +8×Ci+32×nUOC+28 一時表を使用する場合に加算します。 +200×nTT 列名記述領域長の計算式です。動的SQLの場合に加算します。 +32×Si+16 型名記述領域長の計算式です。動的SQLの場合に加算します。 +↑(42×SiT)+{52+152×(SiTA+SiSA+SiNA)×(SiT+SiS+SiN)}↑ }÷1024↑
- 注意事項
-
-
ストアドプロシジャ又はストアドファンクションを使用する場合は,手続き又は関数中に記述するSQL文も計算対象にしてください。
-
トリガを使用する場合はトリガ中に記述するトリガSQL文も計算対象にしてください。
-
ストアドプロシジャ,ストアドファンクション,又はトリガを使用する場合は,ストアドプロシジャ,ストアドファンクション,又はトリガごとにルーチン制御用オブジェクト長を計算してSQLオブジェクト用バッファ長に加算してください。1ルーチンのルーチン制御用オブジェクト長の計算式を(2)に示します。
-
(2) 1ルーチンのルーチン制御用オブジェクト長の計算式
(a) ユーザが定義する場合
ストアドプロシジャ,ストアドファンクション,又はトリガを定義した場合の,1ルーチンのルーチン制御用オブジェクト長は次に示す計算式から求めます。
〈計算式〉
1ルーチンのルーチン制御用オブジェクト長(単位:キロバイト)= ↑{ 600+28×sRi+32×(sRUi+sDi)+56×sSXi+sCUi+sSi+sPi+sLA+sKi+sL+80×sWi +24×sCM+32×sCCR+2×sDCR+60×sCHD+72×sDHD+64×sHCN+8×sCHD×sHCN +48×nRFF+100×nRFP+148×nRFC+200×nPRFF+8×nPRFP+196×nPA+64×nPP +36×nPPI+20×nPPO+200×nPPA+8×nPPP+20×nAR+48×nARA+16×nRPAT +20×nCAT+28×(nRPAF+nRCAF)+20×(nRPAA+nRCAA)+287×nRSFF +8×nRSFP+813×nPJA+20×nPJP+813×nRJFC+20×nRJFP トリガを使用する場合に加算します。 +28×(nTSN×2+nTSO) }÷1024↑
(b) HiRDBが自動的に作成する場合
表定義時,参照動作にCASCADEを指定した場合,HiRDBが制約制御のためにトリガを作成したときの1ルーチンのルーチン制御用オブジェクト長は次に示す計算式から求めます。
〈計算式〉
1ルーチンのルーチン制御用オブジェクト長(単位:キロバイト)= ↑{ 608×RCC+(5120+100×RDi+256×RIi)×RCP×RCT }÷1024↑
(3) 計算式で使用する変数
変数名 |
説明 |
---|---|
RCN |
SQLオブジェクトで使用する表,及びインデクスの合計数 |
Si |
SQL文中にある検索項目数(SQL文で指定する列がインデクス列の場合はその列数) |
Pi |
SQL文中にある埋込み変数又はパラメタ数 |
Ti |
SQL文中にある表名数 |
Ci |
SQL文中にある列名数 表定義時に次に示す定義をした列数も加算してください(SQL文中にない列であっても加算します)。
|
TCi |
SQL文中にある表の構成列数 |
Wi |
SQL文中にある論理演算子数※ |
Ki |
SQL文中にある定数の数※ |
Li |
SQL文中にある定数の合計長※(単位:バイト) |
Ii |
SQL文実行時に使用するインデクス数(SQL文で指定する表のうち,検索条件に指定するインデクス数) |
Di |
SQL文中の表に定義された格納条件の総数(マトリクス分割表は2倍する) |
QX |
問合せ指定数 |
Ai |
SQL文中のスカラ演算の総数 |
SiT |
SQL文中にある選択式の抽象データ型数 |
SiS |
SQL文中にある選択式の抽象データ型のスーパタイプ数 |
SiN |
SQL文中にある選択式のサブタイプである抽象データ型のスーパタイプの総数 |
SiTA |
SQL文中にある選択式の抽象データ型の属性数 |
SiSA |
SQL文中にある選択式の抽象データ型のスーパタイプの属性数 |
SiNA |
SQL文中にある選択式のサブタイプである抽象データ型のコンポネント指定総数 |
nSPA |
SQL文中にある手続き文の呼び出し数 |
nSPP |
SQL文中にある手続き文の引数の総数 |
nFF |
SQL文中にある関数の呼び出し数※ |
nFP |
SQL文中にある関数の引数の総数※ |
nFC |
SQL文中にある関数の総関数定義候補数(関数呼出し数nFFに,引数が抽象データ型の各関数呼出しに対して,サブタイプを引数とする関数定義数を加算する) |
nPFF |
SQLオブジェクトが使用するプラグイン関数呼出し数(SQL文中にあるプラグイン関数呼出し数+SELECTの場合は1,INSERT,UPDATE,DELETEの場合は6) |
nSFF |
SQL文中にあるシステム定義スカラ関数の呼び出し数※ |
nSFP |
SQL文中にあるシステム定義スカラ関数の引数の総数※ |
nJFC |
SQL文中にある外部Java関数の呼び出し数 |
nJFP |
SQL文中にある外部Java関数の引数の総数 |
nAT |
SQL文中にあるコンポネント指定で使用する抽象データ型数(スーパタイプ,抽象データ型属性によって現れる抽象データ型を除く) |
nAA |
SQL文中にあるコンポネント指定で使用する抽象データ型数(スーパタイプ,抽象データ型属性によって現れる抽象データ型を含む) |
nAF |
SQL文中にあるコンポネント指定で使用する属性総数 |
nPAT |
SQLオブジェクトが使用するプラグイン関数の引数で使用する抽象データ型数(スーパタイプ,抽象データ型属性によって現れる抽象データ型を除く) |
nPAA |
SQLオブジェクトが使用するプラグイン関数の引数で使用する抽象データ型数(スーパタイプ,サブタイプを含む) |
nCAT |
SQL文中にあるコンストラクタ関数の呼び出し数 |
nCAA |
SQL文中にあるコンストラクタ関数の抽象データ型数(スーパタイプを含む) |
nCAF |
SQL文中にあるコンストラクタ関数の抽象データ型の属性総数 |
nTR |
SQL文の実行によって起動されるトリガ数 |
nTSN |
SQL文の実行によって起動される各トリガのトリガSQL文中の新値相関名によって修飾された列の総数 |
nTSO |
SQL文の実行によって起動される各トリガのトリガSQL文中の旧値相関名によって修飾された列の総数 |
nTCN |
SQL文の実行によって起動される各トリガのトリガ動作条件中の新値相関名によって修飾された列の総数 |
nTCO |
SQL文の実行によって起動される各トリガのトリガ動作条件中の旧値相関名によって修飾された列の総数 |
RCC |
SQL文中で,更新対象の表を参照する表の外部キーの構成列数と,主キーの構成列数の総数 |
RCT |
SQL文中で,更新対象の表を参照する表,及び更新対象の表が参照する表の総数 |
RCP |
参照表定義時に,参照動作に指定したCASCADEの総数 |
RIi |
参照表定義時,参照指定をする被参照表に定義されたインデクスの総数 |
RDi |
参照表定義時,参照指定をする被参照表に定義された分割格納条件の総数(マトリクス分割表の場合は,2倍する) |
Ui |
集合演算の数+1 |
Tmi |
マトリクス分割した表数 |
Wri |
行値構成子要素を2以上指定した行値構成子を用いた条件数 |
QXs |
複数の選択式を指定した表副問合せ数 |
CDi |
検査制約の条件数 |
PIX |
複数インデクス利用を行うインデクス数 |
ALP |
リストから取得する受渡し値の受信関数数 |
XQX |
XQuery数 |
nURI |
XML名前空間URIの指定数 |
TCCi |
文字集合指定のある列数 |
nSQ |
順序数生成子数 |
nUOC |
データ圧縮に使用するUOC数 |
nTT |
一時表数 |
sRi |
手続き及び関数中のSQLパラメタ数(INOUT指定のSQLパラメタ数は2倍する) |
sRUi |
手続き及び関数中のSQLパラメタの総数(又は,トリガ定義中のトリガSQL文中の新旧値相関名によって修飾された列の総数) |
sDi |
手続き,関数,及びトリガSQL文中のSQL変数(declare)の総数 |
sSXi |
手続き,関数,及びトリガSQL文中のSQLCODE,SQLCOUNT変数の総数 |
sCUi |
手続き,関数,及びトリガSQL文中のCURRENT_TIME,CURRENT_DATE定数の総数 |
sSi |
手続き及びトリガSQL文中の操作系SQLの数(カーソル宣言を除くSQL文:OPEN,FETCH,CLOSE,UPDATE,DELETE,INSERT文など) |
sPi |
手続き,関数,及びトリガSQL文中のルーチン制御SQL数(BEGIN,SET,IF,ELSEIF,WHILEなど) |
sLA |
手続き,関数,及びトリガSQL文中のラベル数 |
sKi |
手続き,関数,及びトリガSQL文中の定数の数(手続き及びトリガSQL文中に記述された操作系SQL文の定数を除く) |
sL |
手続き,関数,及びトリガSQL文中の定数の長さの合計(手続き及びトリガSQL文中に記述された操作系SQL文の定数を除く) |
sWi |
手続き,関数,及びトリガSQL文中の条件述語数 |
sCM |
手続き,関数,及びトリガSQL文中の複合文の数 |
sCCR |
手続き及びトリガSQL文のカーソル宣言を記述した複合文の数 |
sDCR |
手続き及びトリガSQL文のカーソル宣言の数 |
sCHD |
手続き,関数,及びトリガSQL文のハンドラ宣言を記述した複合文の数 |
sDHD |
手続き,関数,及びトリガSQL文のハンドラ宣言の数 |
sHCN |
手続き,関数,及びトリガSQL文のハンドラ宣言中に記述された条件値の数 |
nRFF |
ルーチン中にある関数呼出し数 |
nRFP |
ルーチン中にある関数の引数の総数 |
nRFC |
ルーチン中にある関数の関数定義候補の総数(関数呼出し数nFFに,引数が抽象データ型の各関数呼出しに対して,サブタイプを引数とする関数定義数を加算する) |
nPRFF |
ルーチンのSQLオブジェクトが使用するプラグイン関数呼出し数 |
nPRFP |
ルーチンのSQLオブジェクトが使用するプラグイン関数のプラグインパラメタ総数 |
nPA |
ルーチン中にある手続き呼び出し数 |
nPP |
ルーチン中にある手続きのパラメタ総数 |
nPPI |
ルーチン中にある手続きの入力パラメタ総数(入出力パラメタを含む) |
nPPO |
ルーチン中にある手続きの出力パラメタ総数(入出力パラメタを含む) |
nPPA |
ルーチンのSQLオブジェクトが使用するプラグイン手続き呼び出し数 |
nPPP |
ルーチンのSQLオブジェクトが使用するプラグイン手続きのプラグインパラメタ総数 |
nRSFF |
ルーチン中にあるシステム定義スカラ関数の呼び出し数 |
nRSFP |
ルーチン中にあるシステム定義スカラ関数の引数の総数 |
nPJA |
ルーチン中にある外部Java手続きの呼び出し数 |
nPJP |
ルーチン中にある外部Java手続きの引数の総数 |
nRJFC |
ルーチン中にある外部Java関数の呼び出し数 |
nRJFP |
ルーチン中にある外部Java関数の引数の総数 |
nAR |
ルーチン中にあるコンポネント指定で使用する抽象データ型数(スーパタイプ,抽象データ型属性によって現れる抽象データ型を除く) |
nARA |
ルーチン中にあるコンポネント指定で使用する属性総数 |
nRPAT |
ルーチンのSQLオブジェクトが使用するプラグインルーチンのパラメタで使用する抽象データ型数(ただし,スーパタイプ,抽象データ型属性の抽象データ型を除く) |
nRPAA |
ルーチンのSQLオブジェクトが使用するプラグインルーチンのパラメタで使用する抽象データ型数(スーパタイプを含む) |
nRPAF |
ルーチンのSQLオブジェクトが使用するプラグインルーチンのパラメタで使用する抽象データ型の属性総数 |
nRCAT |
ルーチン中にあるコンストラクタ関数の呼び出し数 |
nRCAA |
ルーチン中にあるコンストラクタ関数の抽象データ型数(スーパタイプを含む) |
nRCAF |
ルーチン中にあるコンストラクタ関数の抽象データ型の属性総数 |
- 注※
-
トリガを使用する場合は,SQL文の実行によって起動される各トリガのトリガ動作条件についても数える必要があります。
(4) 更新可能なオンライン再編成を実行する場合
更新可能なオンライン再編成を実行する場合,SQLオブジェクト用バッファ長を見積もり直す必要があります。SQLオブジェクト用バッファ長は次に示す計算式から求めてください。
SQLオブジェクト用バッファ長=現在のSQLオブジェクト用バッファ長+更新可能なオンライン再編成で必要なSQLオブジェクト用バッファ長
- 参考
-
更新可能なオンライン再編成の追い付き反映処理では,更新ログからSQLを組み立ててオリジナルRDエリアの表に対してSQLを実行します。追い付き反映処理時に実行されるSQLは,UAPが実行したSQLとは異なることがあるため,その分のSQLオブジェクト用バッファ長を見積もる必要があります。
(a) 1SQL文のSQLオブジェクト長の計算式
更新可能なオンライン再編成時の1SQL文のSQLオブジェクト長は,「1SQL文のSQLオブジェクト長の計算式」で説明した計算式から求めてください。ただし,計算式中の変数の値については,次に示す表を参照してください。
変数名 |
説明 |
---|---|
RCN |
2 1SQLが発行されるときは,1表かつ1インデクスのため,合計2となります。 |
Si |
0 UAPの検索(SELECT)は追い付き反映の対象外のため,0となります。 |
Pi |
SQL種別によって異なります。
なお,Piの計算結果が30001以上になる場合は,Piを30000としてください。 |
Ti |
1 追い付き反映処理で実行されるSQLの場合は,表名は一つのため,1となります。 |
Ci |
SQL種別によって異なります。
なお,Ciの計算結果が30001以上になる場合は,Ciを30000としてください。 |
TCi |
UAPが更新する表の構成列数 |
Wi |
0 |
Ki |
0 |
Li |
0 |
Ii |
1 更新可能なオンライン再編成の場合は,ユニークインデクスを一つ決定して検索条件に指定するため,1となります。 |
Di |
表の格納条件数 マトリクス分割の場合は2倍してください。 |
SiT |
0 |
SiS |
0 |
SiN |
0 |
SiTA |
0 |
SiSA |
0 |
SiNA |
0 |
nSPA |
0 |
nSPP |
0 |
nFF |
表に定義されている抽象データ型の列数※1+更新対象のBLOB又はBINARY列でSUBSTR演算をしている列数 |
nFP |
Σ表に定義されている抽象データ型列※1+Σ{表に定義されているBLOB又はBINARY列※1でSUBSTR演算更新の数×3} |
nFC |
0 |
nPFF |
表に定義されている抽象データ型列数※1+6 表に抽象データ型が定義されていない場合は0とします。 |
nSFF |
BLOB又はBINARY列をSUBSTR演算で更新している列数 |
nSFP |
BLOB又はBINARY列をSUBSTR演算で更新している列数×3 |
nJFC |
0 |
nJFP |
0 |
nAT |
0 |
nAA |
0 |
nAF |
0 |
nPAT |
0 |
nPAA |
0 |
nCAT |
表に定義されている抽象データ型列数※1 |
nCAA |
表に定義されている抽象データ型の種類の数※1 |
nCAF |
Σ(表に定義されている抽象データ型の属性数※1×n) n:SGMLTEXT型及びXML型の場合は1,FREEWORD型の場合は2になります。 |
nTR |
0 |
nTSN |
0 |
nTSO |
0 |
nTCN |
0 |
nTCO |
0 |
RCC |
SQL文中で,更新対象の表を参照する表の外部キーの構成列数と,主キーの構成列数の総数 |
RCT |
SQL文中で,更新対象の表を参照する表,及び更新対象の表が参照する表の総数 |
- 注※1
-
pdorbeginコマンドに-eオプションを指定して,更新された列だけを反映する場合は,次に示すように読み替えてください。
読み替え前
読み替え後
表に定義されている抽象データ型の列数
表に定義されている抽象データ型の列のうち,更新対象となる抽象データ型列数
表に定義されているBLOB又はBINARY列
表に定義されているBLOB又はBINARY列のうち,更新対象となるBLOB又はBINARY列
ただし,UAPで明示的に更新していないBLOB又はBINARY列のうち,表定義時に次の定義をした列数も加算してください。
-
列定義にDEFAULT句を指定している列
-
非ナル値制約指定にWITH DEFAULT句を指定している列
表に定義されている抽象データ型の種類の数
表に定義されている抽象データ型の種類のうち,更新対象となる抽象データ型の種類の数
表に定義されている抽象データ型の属性数
表に定義されている抽象データ型の属性のうち,更新対象となる抽象データ型の属性数
-
- 注※2
-
追い付き反映処理で発行したSQL種別がINSERT及びUPDATEの形式2となる場合,又は更新列だけ追い付き反映処理をする場合は,次に示すように読み替えてください。
読み替え前
SQL種別
読み替え後
UAPが更新する表の構成列数
INSERT
(形式1)
−
UPDATE
(形式1)
UAPで明示的に更新した列数
ただし,UAPで明示的に更新していない列のうち,表定義時に次の定義をした列数も加算してください。
-
列定義にDEFAULT句を指定している列
-
非ナル値制約指定にWITH DEFAULT句を指定している列
INSERT
(形式2)
1
UPDATE
(形式2)
-
- (凡例)
-
−:読み替え不要です。
(b) 必要最低限のSQLオブジェクト用バッファ長の求め方
追い付き反映処理時にSQLオブジェクト用バッファ不足が発生しない必要最低限の,SQLオブジェクト用バッファ長の見積もり式を次に示します。
〈計算式〉
MAX{ORG_SQL_OBJ_MAX_SIZE ,ORG_SQL_OBJ_AVE_SIZE×ORG_PROC_NUM× n MIN(100 ,Σ ORG_SQL_KIND) } i=1
- 変数の説明
-
ORG_SQL_OBJ_MAX_SIZE:追い付き反映処理中に実行されるSQLのSQLオブジェクト長を個々に求め,その中で最大となるSQLオブジェクト長
ORG_SQL_OBJ_AVE_SIZE:追い付き反映処理中に実行されるSQLのSQLオブジェクト長の平均値
ORG_PROC_NUM:追い付き反映プロセス数(pdorendコマンドの-mオプションの指定値)
-mオプションの省略時は2となります。
ORG_SQL_KIND:該当表に対して実行されるSQL種別数(INSERT,UPDATE,及びDELETEのうち,該当表に対して実行されるSQL種別数)
n:更新可能なオンライン再編成の対象表数
(c) SQLオブジェクト用バッファ長の再見積もりが必要なとき
次に示す場合は,SQLオブジェクト用バッファ長を見積もり直してください。
-
「1SQL文のSQLオブジェクト長の計算式」で説明している変数の値が大きくなる場合
例えば,更新可能なオンライン再編成の対象表に,現在対象となっている表よりも列数が多い表を追加した場合などが該当します。
-
「必要最低限のSQLオブジェクト用バッファ長の求め方」で説明している変数の値が大きくなる場合
新しいSQL種別を実行するようになった場合が該当します。例えば,今まではINSERTだけを実行していたが,UPDATEも実行するようになった場合などが該当します。