6.3.4 通常運用時のメモリ所要量の求め方
HADBサーバ開始後,通常運用時(HADBクライアントがHADBサーバに接続するとき,およびSQL文を実行するとき)に,HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。
- ■共有メモリ
-
-
プロセス共通メモリ(PROC_EXECSZ)
-
リアルスレッド固有メモリ(RTHD_EXECSZ)
-
- ■プロセスメモリ
-
-
ヒープメモリ(HEAP_EXECSZ)
-
それぞれのメモリ所要量の計算式を次に示します。
(1) プロセス共通メモリの所要量の求め方(通常運用時)
通常運用時のプロセス共通メモリ(PROC_EXECSZ)の所要量は,次の計算式から求めてください。
計算式(単位:キロバイト)
PROC_EXECSZ = PROC_CNCTSZ+PROC_TOTALSQLSSZ+PROC_EXECSQLSZ+PROC_BUFWORK_CTL
+PROC_DEFSQLSZ+PROC_IMPORTSZ+PROC_IDXRBLDSZ+PROC_GETCOSTSZ
+PROC_DBSTATUSSZ+PROC_MODASZ+PROC_EXPORTSZ+PROC_MERGCSZ
+PROC_UPDSZ+PROC_CHGCCMSZ+PROC_CHGCSTSZ+PROC_UPDLISTSZ※
+PROC_ARCCKSZ+PROC_UNARCCKSZ+PROC_REORGSZ+PROC_SYNDICTSZ
+PROC_AUDTRAILSZ+PROC_UPDDMKSZ
- 注※
-
マルチノード機能を使用する場合に加算してください。
- 変数の説明
-
-
PROC_CNCTSZ
データベース接続時に使用するプロセス共通メモリ
「(a) 変数PROC_CNCTSZの求め方」を参照してください。
-
PROC_TOTALSQLSSZ
SQL前処理時に使用するプロセス共通メモリ
「(b) 変数PROC_TOTALSQLSSZの求め方」を参照してください。
-
PROC_EXECSQLSZ
SQL実行時に使用するプロセス共通メモリ
「(c) 変数PROC_EXECSQLSZの求め方」を参照してください。
-
PROC_BUFWORK_CTL
作業表使用時に使用するプロセス共通メモリ
「(d) 変数PROC_BUFWORK_CTLの求め方」を参照してください。
-
PROC_DEFSQLSZ
定義系SQL実行時に使用するプロセス共通メモリ
「(e) 変数PROC_DEFSQLSZの求め方」を参照してください。
-
PROC_IMPORTSZ
adbimportコマンド実行時に使用するプロセス共通メモリ
「6.3.6 adbimportコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbimportコマンド実行時)」を参照して求めてください。
-
PROC_IDXRBLDSZ
adbidxrebuildコマンド実行時に使用するプロセス共通メモリ
「6.3.7 adbidxrebuildコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbidxrebuildコマンド実行時)」を参照して求めてください。
-
PROC_GETCOSTSZ
adbgetcstコマンド実行時に使用するプロセス共通メモリ
「6.3.8 adbgetcstコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbgetcstコマンド実行時)」を参照して求めてください。
-
PROC_DBSTATUSSZ
adbdbstatusコマンド実行時に使用するプロセス共通メモリ
「6.3.9 adbdbstatusコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbdbstatusコマンド実行時)」を参照して求めてください。
-
PROC_MODASZ
adbmodareaコマンド実行時に使用するプロセス共通メモリ
「6.3.12 adbmodareaコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbmodareaコマンド実行時)」を参照してください。
-
PROC_EXPORTSZ
adbexportコマンド実行時に使用するプロセス共通メモリ
「6.3.10 adbexportコマンド実行時のメモリ所要量の求め方」を参照して求めてください。
-
PROC_MERGCSZ
adbmergechunkコマンド実行時に使用するプロセス共通メモリ
「6.3.13 adbmergechunkコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbmergechunkコマンド実行時)」を参照して求めてください。
-
PROC_UPDSZ
データベース接続後の定義系SQLの初回実行時,および更新系SQLの初回実行時に使用するプロセス共通メモリ
「(f) 変数PROC_UPDSZの求め方」を参照して求めてください。
-
PROC_CHGCCMSZ
adbchgchunkcommentコマンド実行時に使用するプロセス共通メモリ
「6.3.14 adbchgchunkcommentコマンド実行時のメモリ所要量の求め方」を参照して求めてください。
-
PROC_CHGCSTSZ
adbchgchunkstatusコマンド実行時に使用するプロセス共通メモリ
「6.3.15 adbchgchunkstatusコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbchgchunkstatusコマンド実行時)」を参照して求めてください。
-
PROC_UPDLISTSZ
マルチノード機能適用時に使用するプロセス共通メモリ
「(g) 変数PROC_UPDLISTSZの求め方」を参照してください。
-
PROC_ARCCKSZ
adbarchivechunkコマンド実行時に使用するプロセス共通メモリ
「6.3.16 adbarchivechunkコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbarchivechunkコマンド実行時)」を参照してください。
-
PROC_UNARCCKSZ
adbunarchivechunkコマンド実行時に使用するプロセス共通メモリ
「6.3.17 adbunarchivechunkコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbunarchivechunkコマンド実行時)」を参照してください。
-
PROC_REORGSZ
adbreorgsystemdataコマンド実行時に使用するプロセス共通メモリ
「6.3.18 adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbreorgsystemdataコマンド実行時)」を参照してください。
-
PROC_SYNDICTSZ
adbsyndictコマンド実行時に使用するプロセス共通メモリ
「6.3.20 adbsyndictコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbsyndictコマンド実行時)」を参照してください。
-
PROC_AUDTRAILSZ
adbaudittrailコマンド実行時に使用するプロセス共通メモリ
「6.3.21 adbaudittrailコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbaudittrailコマンド実行時)」を参照してください。
-
PROC_UPDDMKSZ
adbupddmkコマンド実行時に使用するプロセス共通メモリ
「6.3.23 adbupddmkコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbupddmkコマンド実行時)」を参照してください。
-
(a) 変数PROC_CNCTSZの求め方
変数PROC_CNCTSZは,データベース接続時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
PROC_CNCTSZ= BUFCNCT+SQLWQUE+SQLACTB+RTHDLOG+OBJDELCTL※+2
- 注※
-
クラウドストレージ機能を使用する場合に加算してください。
変数の説明
- BUFCNCT:コネクションバッファ
-
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
BUFCNCT= ↑(56+8,216×rthd_num)×max_users÷1,024↑
- rthd_num
-
次の計算式から求めてください。
サーバ定義adb_sys_rthd_numオペランドの指定値 + 1
ただし,サーバ定義に-vオプション,または-kオプションを指定したadbbuffオペランドがない場合は,変数rthd_numは0としてください。
- max_users
-
サーバ定義adb_sys_max_usersオペランドの指定値
- SQLWQUE:SQL文実行待ちキュー
-
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
SQLWQUE= ↑8×max_users÷1,024↑
max_users:サーバ定義adb_sys_max_usersオペランドの指定値
- SQLACTB:SQL文テーブルアクセス情報
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
max_table_num:対象のコネクションで実行する各SQL文でアクセスする表数の最大値
- RTHDLOG
-
処理リアルスレッド用ログ管理領域
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- rthd_num
-
サーバ定義adb_sys_rthd_numオペランドの指定値
- OBJDELCTL
-
S3オブジェクトまたはBLOBの削除制御領域
次に示す計算式から求めてください。
計算式(単位:キロバイト)
OBJDELCTL=↑(16×rthd_num)÷1,024↑
- rthd_num
-
サーバ定義adb_sys_rthd_numオペランドの指定値
(b) 変数PROC_TOTALSQLSSZの求め方
変数PROC_TOTALSQLSSZは,SQLの前処理時に加算します。次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
PROC_TOTALSQLSSZ= MAXSQLWRK+TOTALSQLSCT+PREDICSZ+PROC_AUDINFSZ
変数の説明
- MAXSQLWRK
-
1トランザクション中に,SQLの前処理で使用される作業領域
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
MAXSQLWRK= (max_sql(SQLPSZ)+20)×max_users
- max_sql()
-
SQLPSZの計算結果から最大値を代入します。
- max_users
-
サーバ定義adb_sys_max_usersオペランドの指定値
- SQLPSZ
-
SQL文の前処理で使用される作業領域
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- tbln
-
FROM句に指定した表数
- gbycoln
-
GROUP BY句に指定した列の数
- obysorn
-
ORDER BY句に指定したソートキーの数
- updsetn
-
UPDATE文のSET句の数
- inscolnamn
-
INSERT文の挿入対象列の数
- identn
-
識別子の数
- drvt_num
-
導出表の個数
- max_query_spec
-
1SQL文に指定できる問合せ指定の最大数
- vtbl
-
1SQL文中のビュー表の数
- vquery_num
-
ビュー定義に指定した問合せ指定の数
- vjotbl_num
-
ビュー定義に指定した結合表の数
- vtbl_num
-
ビュー定義に指定した実表の数
- jointbln
-
結合表の数
- subqun
-
副問合せの数
- queryn
-
問合せ指定の数
- col_num
-
選択式の数
- pwl
-
WITH句の個数
- drvtbln
-
FROM句に指定した導出表の数
- drvcolnum
-
導出表の列数
- fmt_len
-
スカラ関数CONVERTの書式サイズ(単位:バイト)
- drvtblnum
-
導出表の数
- viewcolnum
-
ビュー表の列数
- viewtblnum
-
ビュー表の数
- qurycolnum
-
問合せ名の列数
- qurytblnum
-
問合せ名の数
- charnum
-
1SQL文のバイト数
- vcol_num
-
ビュー定義に指定した列の数
- vwindow_num
-
ビュー定義に指定したウィンドウ関数の数
- vgroup_num
-
ビュー定義に指定したGROUP BY句の数
- vsetf_num
-
ビュー定義に指定した集合関数の数
- gbyn
-
GROUP BY句の数
- qexp
-
集合演算の数
- drvjotblnum
-
導出表に指定した結合表の数
- drvquerynum
-
導出表に指定した問合せの数
- drvwindownum
-
導出表に指定したウィンドウ関数の数
- drvgroupnum
-
導出表に指定したGROUP BY句の数
- drvsetfnum
-
導出表に指定した集合関数の数
- projn
-
値式の数
- max_drvtbln
-
FROM句に指定できる表数の最大値
- fjoin_drvquerynum
-
FULL OUTER JOIN中に含まれる導出表に指定した問合せの数
- fjoin_tbln
-
FULL OUTER JOIN中の表参照の数
- fjoin_tblcoln
-
FULL OUTER JOIN中の表参照の列数
- winfuncn
-
ウィンドウ関数の数
- query_expn
-
問合せ式の数
- setfuncn
-
集合関数の数(AVGの場合は+2とします)
- drv_setopnum
-
導出表に指定した集合演算の数
- archk_tbln
-
アーカイブマルチチャンク表の数
- csvrd_fieldnonum
-
ADB_CSVREAD関数に指定されたフィールドデータ番号の数
- predn
-
述語の数
- qurytblfuncn
-
問合せ名に指定した表関数導出表の数
- tblfuncn
-
表関数導出表の数
- colspen
-
列指定の数
- concat_n
-
連結演算の数
- gname_coln
-
グループ化列の列名の数
- inscoln
-
挿入列の数
- prep_tbln
-
前処理表の数
- withlistnum_recursion
-
再帰的問合せのWITHリスト要素の数
- withlistnum_recursion_query
-
再帰的問合せ中の問合せ指定の数
- vsetop_num
-
ビュー定義に指定した集合演算の数
- audrd_flpthn
-
ADB_AUDITREAD関数に指定した監査証跡ファイルのパス名の数
- tblfunc_coln
-
表関数導出表の列数
- setfunc_distn
-
DISTINCT集合関数の数
- inn
-
IN述語の数
- any_elmrefn
-
ANYを指定した配列要素参照の数
- unnestn
-
集まり導出表の数
- arraggn
-
ARRAY_AGG集合関数の数
- psetfuncn
-
逆分布関数の数
- listaggn
-
LISTAGG集合関数の数
- casen
-
CASE式の数
- TOTALSQLSCT
-
1トランザクション中で作成される,SQL文の前処理の前処理結果管理領域の合計
なお,JDBCドライバからSQL文を実行する場合は,1コネクション内で同時に作成されるSQL文の前処理の前処理結果管理領域の合計となります。
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
TOTALSQLSCT= sum_sql(SQLPSSZ+SQLSSZ+APATHVIEW)×max_users
- max_users
-
サーバ定義adb_sys_max_usersオペランドの指定値
- sum_sql()
-
変数SQLSSZの計算結果から最大値を代入します。
なお,JDBCドライバからSQL文を実行する場合は,1コネクション内で実行する各SQL文について求めた値のうち,最大値を代入します。
- SQLPSSZ
-
SQL文の前処理時に取得される前処理結果制御領域
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
SQLPSSZ= ↑184÷1,024↑
- SQLSSZ
-
SQL文の前処理で使用される前処理結果管理領域
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- 注※
-
コスト情報を収集した表の場合は,32,776となります。
- tblcoln
-
処理対象表の列数
- tblidxn
-
処理対象表に定義したインデクス数
- tbln
-
FROM句に指定した表の数
- col_num
-
選択式の数
- insvaln
-
挿入値の数
- inscoln
-
挿入列の数
- updcoln
-
更新列の数
- colspen
-
列指定の数
- gbycoln
-
GROUP BY句に指定したグループ化列の数
- operan
-
四則演算の数
- liken
-
LIKE述語の数
- inn
-
IN述語の数
- scafuncn
-
スカラ関数の数
- setfuncn
-
集合関数の数(AVGの場合は+2とします)
- notn
-
NOTの数
- orn
-
ORの数
- param_num
-
?パラメタの数
- sregn
-
日時情報取得関数およびユーザ情報取得関数の総数
- rown
-
ROWの数
- jointbln
-
結合表の数
- inscolnamn
-
INSERT文の挿入対象列の数
- subqun
-
副問合せの数
- ord_num
-
ORDER BY句に指定した列の数
- queryn
-
問合せ指定の数
- logicn
-
AND,ORおよびNOTの論理演算の数
- predn
-
述語の数
- base_num
-
ビュー定義に指定した基表の数
- sel_num
-
ビュー定義に指定した問合せ指定の選択式の数
- pwg
-
ラベル付き間隔の数
- scl
-
列数(列指定の数と,*指定の展開後の列指定の数の総和)
- sgc
-
グループ化列数
- ssk
-
ORDER BY句に指定したソートキーの数
- srw
-
ROWの対象表に含まれるDECIMAL型,NUMERIC型,TIMESTAMP型の数
- exp_num
-
値式の総数
- sum_view_object()
-
括弧内のものについて,1SQL文内で指定したビュー表のビューオブジェクトサイズの合計値(単位:バイト)
- view_size
-
ビューオブジェクトのサイズ(ディクショナリ表(実表)のSQL_VIEWS表のVIEW_OBJECT_SIZE列の値)(単位:バイト)
- qexp_coln
-
集合演算中の問合せ式の列数
- gname_coln
-
グループ化列の列名の数
- default_coln
-
DEFAULT句を指定した列数
- act_num
-
CASE式のTHENとELSEの総数
- decode_revn
-
スカラ関数DECODEの返却値の数
- fmt_len
-
スカラ関数CONVERTの書式サイズ(単位:バイト)
- obysorn
-
ORDER BY句に指定したソート項目の数
- pw29
-
WHENの個数
- projn
-
値式の数
- fulljoin_num
-
SQL文に指定されたFULL OUTER JOINの数
- fj_join_num
-
FULL OUTER JOINに指定された結合表の数
- gbyn
-
GROUP BY句の数
- qexp
-
集合演算の数
- query_expn
-
問合せ式の数
- winfuncn
-
ウィンドウ関数の数
- withlistnum
-
WITHリスト要素の数
- likeregn
-
LIKE_REGEX述語の数
- listaggn
-
LISTAGG集合関数の数
- tblfuncn
-
表関数導出表の数
- multisetn
-
マルチ集合値式の数
- rowvaluecon
-
行値構成子の数
- tablevaluecon
-
表値構成子の数
- rowvaluecon_coln
-
行値構成子の列数
- gexp_coln
-
グループ値式の数
- fucall_paramn
-
関数呼び出しの引数の数
- csvrd_n
-
ADB_CSVREAD関数の数
- csvrd_fieldnonum
-
ADB_CSVREAD関数に指定されたフィールドデータ番号の数
- multiset_projn
-
マルチ集合値式のマルチ集合要素の数
- archk_tbln
-
アーカイブマルチチャンク表の数
- archk_coln
-
アーカイブマルチチャンク表の導出列の数
- drvtblnum
-
導出表の数
- comp_dec_num
-
比較演算項にDECIMAL型またはNUMERIC型のデータと,INTEGER型,BIGINT型,またはSMALLINT型のデータを指定している演算数
- contains_n
-
スカラ関数CONTAINSの数
- def_char_datesn
-
日時データの既定の文字列表現の数
- drvcolnum
-
導出表の列数
- tblfunc_coln
-
表関数導出表の列数
- pw_when
-
CASE式に指定したWHENの個数
- regex_num
-
LIKE_REGEX述語の指定数
- scalfunc_paramn
-
スカラ関数の引数の数
- setfuncn0
-
集合関数の数
- winf_part_projn
-
ウィンドウ分割句中の値式の数
- audrd_n
-
ADB_AUDITREAD関数の数
- ltdecode_revn
-
スカラ関数LTDECODEの返却値の数
- randcursornum
-
スカラ関数RANDOMCURSORの数
- randrownum
-
スカラ関数RANDOMROWの数
- elmrefn
-
配列要素参照の数
- unnestn
-
集まり導出表の数
- unnest_coln
-
集まり導出表の列数
- arraggn
-
ARRAY_AGG集合関数の数
- setfunc_distn
-
DISTINCT集合関数の数
- psetfuncn
-
逆分布関数の数
- randnum
-
スカラ関数RANDOMの数
- rand_normalnum
-
スカラ関数RANDOM_NORMALの数
- pred_rvcn
-
述語に指定した行値構成子の数
- pred_rvcen
-
述語に指定した行値構成子要素の数
- APATHVIEW
-
アクセスパスを表示する際に作成されるアクセスパス情報管理領域
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
APATHVIEW= ↑((9,728+1,024×scl)×tbln+2,200)÷4,096↑×5
- tbln
-
FROM句に指定した表の数
- scl
-
列数(列指定の数と,*指定の展開後の列指定の数の総和)
- PREDICSZ
-
次に示す値を代入してください。
値(単位:キロバイト)
- PROC_AUDINFSZ
-
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(t) 変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。
(c) 変数PROC_EXECSQLSZの求め方
変数PROC_EXECSQLSZは,SQL実行時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
- 注※
-
PURGE CHUNK文およびTRUNCATE TABLE文を実行する場合に加算してください。
変数の説明
- TRANSNAP
-
トランザクション情報スナップショット
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- max_users
-
サーバ定義adb_sys_max_usersオペランドの指定値
- RTHDUPDINF
-
処理リアルスレッド更新情報
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- rthd_num
-
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
なお,クライアント定義adb_sql_exe_max_rthd_numオペランドを指定した場合は,クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。ただし,クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値が,サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値よりも大きい場合は,サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。
詳細については,「7.2.2 性能に関するオペランド(set形式)」のadb_sql_exe_max_rthd_numオペランドを参照してください。
- DBUPDINF
-
DBエリア,表,インデクス,およびチャンク更新情報
次に示す計算式から求めてください。なお,マルチノード機能を使用するかどうかで,計算式が異なります。
計算式:(単位:キロバイト)
- archive_file_num
-
アーカイブ状態のチャンクに対応しているアーカイブファイル数
adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力して,「Archive_file_num」を確認してください。「Archive_file_num」については,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)のアーカイブ状態のチャンクのサマリ情報で出力される項目のアーカイブ状態のチャンクのサマリ情報で出力される項目の一覧を参照してください。
(d) 変数PROC_BUFWORK_CTLの求め方
変数PROC_BUFWORK_CTLは,作業表使用時に加算します。次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
PROC_BUFWORK_CTL= max_users+rthd_num
- 変数の説明
-
max_users:サーバ定義adb_sys_max_usersオペランドの指定値
rthd_num:サーバ定義adb_sys_rthd_numオペランドの指定値
(e) 変数PROC_DEFSQLSZの求め方
変数PROC_DEFSQLSZは,定義系SQL実行時に加算します。次に示す値を代入してください。
なお,マルチノード機能を使用するかどうかで,代入する値が異なります。
マルチノード機能を使用しない場合に代入する値(単位:キロバイト)
マルチノード機能を使用する場合に代入する値(単位:キロバイト)
- 注
-
実表を定義した場合,または実表にインデクスを定義した場合は,プロセス共通メモリ(DBエリア情報)の所要量が増加します。「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(f) 変数DBAREAINFの求め方」を参照して,変数DBAREAINFを再度求めてください。
(f) 変数PROC_UPDSZの求め方
変数PROC_UPDSZは,データベース接続後の定義系SQLの初回実行時,および更新系SQLの初回実行時に加算します。次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
PROC_UPDSZ= BUFUPD×upd_users
変数の説明
- upd_users
-
更新ページ管理用のプロセス共通メモリを取得するコネクション(APおよびコマンド)の同時実行数
- BUFUPD
-
更新ページ管理用のプロセス共通メモリ
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
BUFUPD= ↑(56+BUFHIST+BUFFLU+BUFBLK)÷1,024↑
更新ページ管理用のプロセス共通メモリは,次に示すタイミングで確保されます。
表6‒4 メモリが確保されるタイミング 項番
実行する種別
確保の有無
1
-
AP実行時
-
adbsqlコマンド実行時
-
定義系SQLを実行したコネクション
-
更新系SQLを実行したコネクション
○※1
2
検索系SQLだけを実行したコネクション
×※2,※3
3
adbinitコマンド実行時
○
4
adbimportコマンド実行時
○
5
adbidxrebuildコマンド実行時
○
6
adbgetcstコマンド実行時
○※4
7
adbdbstatusコマンド実行時
×
8
adbstatコマンド実行時
×
9
adbmodareaコマンド実行時
○
10
adbexportコマンド実行時
×※2
11
adbmergechunkコマンド実行時
○
12
adbchgchunkcommentコマンド実行時
○※4
13
adbmodbuffコマンド実行時
×
14
adbarchivechunkコマンド実行時
○
15
adbunarchivechunkコマンド実行時
○
- (凡例)
-
○:更新ページ管理用のプロセス共通メモリを確保します。
×:更新ページ管理用のプロセス共通メモリを確保しません。
- 注※1
-
前処理でエラーになった場合は,更新ページ管理用のプロセス共通メモリを確保しません。
- 注※2
-
作業表への書き込みのためには,更新ページ管理用のプロセス共通メモリを確保しません。
- 注※3
-
一度でも定義系SQL,または更新系SQLを実行したコネクションでは,コネクションバッファを確保したままとなります。
- 注※4
-
システム表を更新するため,更新ページ管理用のプロセス共通メモリを確保します。
- BUFHIST
-
次に示す計算式から求めてください。
- 計算式(単位:バイト)
-
BUFHIST= 116×RTHNUM+44,052+BUFMEM(RTHNUM+257)+BUFMEM(RTHNUM+4,097)
- BUFMEM
-
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(d) 変数BUFGLOBALの求め方」の変数BUFMEMを参照してください。
- BUFFLU
-
次に示す計算式から求めてください。
- 計算式(単位:バイト)
-
BUFFLU= 8×uthd_num+96×RTHNUM+393,312
- uthd_num
-
サーバ定義adb_sys_uthd_numオペランドの指定値
- BUFBLK
-
次に示す計算式から求めてください。
- 計算式(単位:バイト)
-
BUFBLK= 33,734,656+1,024×BUFLOG
- BUFLOG
-
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(d) 変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。
(g) 変数PROC_UPDLISTSZの求め方
変数PROC_UPDLISTSZは,マルチノード機能適用時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
変数の説明
- max_users
-
サーバ定義adb_sys_max_usersオペランドの指定値
(2) リアルスレッド固有メモリの所要量の求め方(通常運用時)
通常運用時のリアルスレッド固有メモリ(RTHD_EXECSZ)の所要量は,次の計算式から求めてください。
計算式(単位:キロバイト)
RTHD_EXECSZ = RTHD_CNCTSZ+RTHD_DEFSQLSZ+RTHD_EXESQLSZ+RTHD_ROLLBKSZ +RTHD_DBEXTSZ+RTHD_WORKBUF+RTHD_EXESQLDICSZ +RTHD_COMMUSZ+RTHD_MODASZ+RTHD_EXPSQLTRCSZ +RTHD_AUDINFSZ+RTHD_COLUMNIZESZ+RTHD_UPDDMKSZ +RTHD_CHGCSTSZ
- 変数の説明
-
-
RTHD_CNCTSZ
データベース接続時に使用するリアルスレッド固有メモリ
「(a) 変数RTHD_CNCTSZの求め方」を参照して求めてください。
-
RTHD_DEFSQLSZ
定義系SQLの実行時に使用するリアルスレッド固有メモリ
「(b) 変数RTHD_DEFSQLSZの求め方」を参照して求めてください。
-
RTHD_EXESQLSZ
操作系SQLの実行時に使用するリアルスレッド固有メモリ
「(c) 変数RTHD_EXESQLSZの求め方」を参照して求めてください。
-
RTHD_ROLLBKSZ
ロールバック処理時,またはHADBサーバの再開始時に使用するリアルスレッド固有メモリ
「(d) 変数RTHD_ROLLBKSZの求め方」を参照して求めてください。
-
RTHD_DBEXTSZ
DBエリア拡張時に使用するリアルスレッド固有メモリ
「(e) 変数RTHD_DBEXTSZの求め方」を参照して求めてください。
-
RTHD_WORKBUF
作業表使用時に使用するリアルスレッド固有メモリ
「(f) 変数RTHD_WORKBUFの求め方」を参照して求めてください。
-
RTHD_EXESQLDICSZ
操作系SQLの前処理時に使用するリアルスレッド固有メモリ
「(g) 変数RTHD_EXESQLDICSZの求め方」を参照して求めてください。
-
RTHD_COMMUSZ
通信処理時に使用するリアルスレッド固有メモリ
「(h) 変数RTHD_COMMUSZの求め方」を参照して求めてください。
-
RTHD_MODASZ
adbmodareaコマンド実行時に使用するリアルスレッド固有メモリ
「6.3.12 adbmodareaコマンド実行時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(adbmodareaコマンド実行時)」を参照して求めてください。
-
RTHD_EXPSQLTRCSZ
SQLトレースバッファの拡張時に使用するリアルスレッド固有メモリ
「(i) 変数RTHD_EXPSQLTRCSZの求め方」を参照して求めてください。
-
RTHD_AUDINFSZ
監査証跡機能の有効時に使用するリアルスレッド固有メモリ
「(j) 変数RTHD_AUDINFSZの求め方」を参照して求めてください。
-
RTHD_COLUMNIZESZ
更新行のカラム化機能の有効時に使用するリアルスレッド固有メモリ
「(k) 変数RTHD_COLUMNIZESZの求め方」を参照して求めてください。
-
RTHD_UPDDMKSZ
adbupddmkコマンド実行時に使用するリアルスレッド固有メモリ
「6.3.23 adbupddmkコマンド実行時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(adbupddmkコマンド実行時)」を参照して求めてください。
-
RTHD_CHGCSTSZ
adbchgchunkstatusコマンド実行時に使用するリアルスレッド固有メモリ
「6.3.15 adbchgchunkstatusコマンド実行時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(adbchgchunkstatusコマンド実行時)」を参照して求めてください。
-
(a) 変数RTHD_CNCTSZの求め方
変数RTHD_CNCTSZは,データベース接続時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
RTHD_CNCTSZ=TRANSNAP+SQLTRC+OBJDELLIST※
- 注※
-
クラウドストレージ機能を使用する場合に加算してください。
変数の説明
- TRANSNAP
-
「(1) プロセス共通メモリの所要量の求め方(通常運用時)」の「(c) 変数PROC_EXECSQLSZの求め方」の変数TRANSNAPを参照してください。
- SQLTRC
-
SQLトレース機能の管理情報
65,536キロバイトを代入してください。
- OBJDELLIST
-
S3オブジェクトまたはBLOBの削除リスト
1,524キロバイトを代入してください。
(b) 変数RTHD_DEFSQLSZの求め方
変数RTHD_DEFSQLSZは,定義系SQL実行時に加算します。次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
変数の説明
- SZ_ALTER_TABLE
-
実表の定義を変更するときに,次に示す値を代入してください。
値(単位:キロバイト)
SZ_ALTER_TABLE = 869
- SZ_ALTER_VIEW
-
ビュー表の定義を変更するときに,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_CREATE_INDEX
-
インデクスを定義するときに,次に示す値を代入してください。
また,CREATE TABLE文で一意性制約定義,またはチャンクアーカイブ指定を指定するときにも,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_CREATE_TABLE
-
実表を定義するときに,次に示す値を代入してください。
値(単位:キロバイト)
SZ_CREATE_TABLE = 1,402
- SZ_CREATE_VIEW
-
ビュー表を定義するときに,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_DROP_INDEX
-
インデクスを削除するときに,次に示す値を代入してください。
また,DROP USER文,DROP SCHEMA文,またはDROP TABLE文を実行した場合に,処理の延長でインデクスが削除されるときにも,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_DROP_TABLE
-
実表を削除するときに,次に示す値を代入してください。
また,DROP USER文またはDROP SCHEMA文を実行した場合に,処理の延長で実表が削除されるときにも,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_DROP_VIEW
-
ビュー表を削除するときに,次に示す値を代入してください。
また,DROP USER文,DROP SCHEMA文またはDROP TABLE文を実行した場合に,処理の延長でビュー表が削除されるときにも,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_GRANT
-
権限を付与するときに,次に示す値を代入してください。
値(単位:キロバイト)
- SZ_REVOKE
-
権限を取り消すときに,次に示す値を代入してください。
また,DROP USER文,DROP SCHEMA文またはDROP TABLE文を実行した場合に,処理の延長で権限が取り消されるときにも,次に示す値を代入してください。
値(単位:キロバイト)
(c) 変数RTHD_EXESQLSZの求め方
変数RTHD_EXESQLSZは,操作系SQL実行時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
- 注※
-
アーカイブマルチチャンク表に対してPURGE CHUNK文およびTRUNCATE TABLE文を実行する場合に加算してください。
変数の説明
- max_sql():
-
実行する各SQLについて括弧内の変数の計算結果を求めて,それらの最大値を代入します。
- max_sql_concurrent_exec_num:
-
1トランザクション内で同時に実行するSQLの数の最大値
- SQL_CNCT_SIZE:操作系SQLの管理領域
-
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
SQL_CNCT_SIZE= STATEMENT_SIZE+CNCT_THD_SIZE+0.3
- STATEMENT_SIZE:文ハンドル管理情報
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- 注※
-
SQLパラレル実行機能を使用する場合に加算してください。
- PREPARE_INFO_SIZE:SQL文の前処理情報
-
次に示す計算式から求めてください。
計算式(単位:バイト)
PREPARE_INFO_SIZE= col_num×214+param_num×80+idx_num×512
col_num:SQLに指定した選択式の数
param_num:SQLに指定した?パラメタの数
idx_num:SQLで使用するインデクス数
- PARAM_INFO_SIZE:パラメタ格納領域
-
次に示す計算式から求めてください。
計算式(単位:バイト)
param_num:SQLに指定した?パラメタの数
param_size(i):各?パラメタの最大データ長
- APATHVIEW:アクセスパスを表示する際に作成されるアクセスパス情報管理領域
-
「(1) プロセス共通メモリの所要量の求め方(通常運用時)」の「(b) 変数PROC_TOTALSQLSSZの求め方」にある変数APATHVIEWを参照してください。
- PARALLEL_INFO_SIZE:SQLパラレル実行機能情報
-
SQLパラレル実行機能を使用する場合に,次に示す計算式から求めてください。
計算式(単位:バイト)
PARALLEL_INFO_SIZE= 2,212+sql_length+128×(MAX_NODE_NUM-1) +48×MAX_NODE_NUM×(sql_rthd_num+1)
sql_length:SQL文長
sql_rthd_num:最大SQL処理リアルスレッド数(クライアント定義のadb_sql_exe_max_rthd_numオペランドの指定値)
- MAX_NODE_NUM:SQL文を処理するノード数の最大値
-
次に示す計算式から求めてください。
MAX_NODE_NUM= MIN(db_area_file_num ,multi_node_num+worker_node_num)
db_area_file_num:処理対象表が格納されているDBエリアファイルの数
multi_node_num:サーバ定義adb_sys_multi_node_infoオペランドに指定されたホスト名の数
worker_node_num:サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値
- CNCT_THD_SIZE:SQL実行管理領域
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- 重要
-
■ビュー表または問合せ名を指定する場合の留意事項
SQL文中にビュー表または問合せ名を指定する場合は,それぞれに対応する内部的な導出表を適用したものとして見積もりを行ってください。ただし,再帰的問合せ内にある,対象となる再帰的問合せを参照している再帰的問合せ名については,その再帰的問合せの結果が格納される作業表と仮定して見積もりを行ってください。
(例)
・ビュー表を定義するSQL文
CREATE VIEW "V1" AS SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"
・実行するSQL文
SELECT * FROM "V1","T3" WHERE "V1"."C1"="T3"."C3"
・見積もり対象とするSQL文
SELECT * FROM (SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"),"T3" WHERE "V1"."C1"="T3"."C3"
■アーカイブマルチチャンク表を指定する場合の留意事項
SQL文中にアーカイブマルチチャンク表を指定する場合は,導出表に等価変換されたものとして見積もりを行ってください。アーカイブマルチチャンク表の等価変換については,マニュアルHADB AP開発ガイドのアーカイブマルチチャンク表を検索するSQL文の等価変換を参照してください。
- tbl_num:指定した表数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- sql_rthd_num:
-
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
- setop_num:SQL文中に指定した集合演算子の数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- query_num:問合せの数
-
SQL文中に指定したFROM句の数から求めてください。
また,FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数×2で求めた値を加算してください。
- window_num:SQL文中に指定したウィンドウ関数の数
-
1つの問合せ指定中に,引数の異なるDISTINCT集合関数を複数指定している場合は,その指定数-1で求めた値も加算してください。
- drvtbl_num:SQL文中に指定した導出表の数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- tblfunc_num:
-
表関数導出表の個数
- Σ(HASHGRP_SIZE):
-
SQL文に指定した問合せ単位にHASHGRP_SIZEを計算した合計値(単位:バイト)
- Σ(WRK_TABLE_OPE_SIZE):
-
作成される作業表単位にWRK_TABLE_OPE_SIZEを計算した合計値(単位:バイト)
次に示すことについては,「6.25 作業表に関する見積もり」およびマニュアルHADB AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。
-
SQL文の実行時に作業表が作成されるかどうか
-
作成される作業表の個数および構成列
-
- Σ(LMTWRK_SIZE):
-
作成される作業表単位にLMTWRK_SIZEを計算した合計値(単位:バイト)
次に示すことについては,「6.25 作業表に関する見積もり」およびマニュアルHADB AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。
-
LIMIT句を指定したSQL文が作業表を作成するかどうか
-
作成される作業表の個数
なお,LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は,集合演算を構成する問合せ指定ごとに,LIMIT句の指定値が適用されます。
-
- MAX(CSVREAD_WORK_SIZE):
-
ADB_CSVREAD関数を指定した表関数導出表ごとに変数CSVREAD_WORK_SIZEをバイト単位で求めてください。その中で,最も大きい値を代入してください。
- tvc_num:
-
SQL文中に指定した表値構成子の数
- in_query_num:
-
次に示す条件を満たす述語の数の合計値
-
IN述語の場合
右側に表副問合せを指定し,左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
限定述語の場合
=ANYまたは=SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
- RESULT_WORK_SIZE:SQL実行結果格納領域
-
次に示す計算式から求めてください。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
RESULT_WORK_SIZE= ↑(40+sum_col_size+row_size +2×(sum_grp_size+sum_window_spec_size) +3×(sum_set_func_size+sum_dist_col_size+sum_window_func_size) +8×(all_col_num+row_num+2×(grp_col_num+window_spec_col_num) +3×(set_func_num+dist_col_num+window_func_num)) +sum_inpred_size+sum_reg_size +8×group_query_num+12×list_num +16×join_num+supquery_num +sum_setop_size×3+full_join_drvc_size×3 +(func_filepath_size+4)×(csvread_num+auditread_num))÷16↑×16
-
sum_col_size
指定したすべての列のデータ長の合計値
-
row_size
ROWでデータを取得する表の行長の合計値
-
sum_grp_size
グループ化列のデータ長の合計値
-
sum_window_spec_size
ウィンドウ指定に指定した列のデータ長の合計値
-
sum_set_func_size
集合関数の結果のデータ長の合計値
-
sum_dist_col_size
DISTINCT集合関数の引数に指定した列のデータ長の合計値
-
sum_window_func_size
ウィンドウ関数の結果のデータ長の合計値
-
all_col_num
指定したすべての列の数
-
row_num
指定したROWの数
-
grp_col_num
GROUP BY句に指定したグループ化列の数
-
window_spec_col_num
ウィンドウ指定に指定した列の数
-
set_func_num
集合関数の数
-
dist_col_num
DISTINCT集合関数の引数に指定した列の数
-
window_func_num
ウィンドウ関数の数
-
sum_inpred_size
指定したすべてのIN述語の結果作成用領域(29+8×IN述語のINの右側に指定した値式の数)の合計値。ただし,IN述語を指定していない場合は0
-
sum_reg_size
指定したすべての日時情報取得関数およびユーザ情報取得関数のデータ長の合計値
-
group_query_num
GROUP BY句を指定した問合せ指定の数
-
list_num
作業表の個数
次の個数を合計したものを代入してください。
・ORDER BY句を指定した場合は+1
・GROUP BY句を指定した問合せ指定の数
・SELECT DISTINCTを指定した問合せ指定の数
・DISTINCT集合関数の指定数
・逆分布関数の指定数
・ウィンドウ関数の指定数
・FROM句に複数の表参照を指定した問合せ指定の数
・導出表の数
・ビュー表の指定数
・WITH句の数
・結合表の指定数(FULL OUTER JOINの場合は2とカウントする)
・副問合せの指定数
・集合演算の指定数+1
・LISTAGG集合関数でALL(省略値)を指定した数
・LISTAGG集合関数でDISTINCTを指定した数×2
・ARRAY_AGG集合関数の指定数
-
join_num
結合表の数
FULL OUTER JOINの場合は,1つ当たり2とカウントしてください。
-
supquery_num
副問合せの数
-
sum_setop_size
各集合演算について,集合演算の結果の選択式のデータ長を合計してください。そして,それらを合計した値を代入してください。
-
full_join_drvc_size
FULL OUTER JOINを指定した各問合せ指定について,選択式のデータ長を求めてください。そして,それらを合計した値を代入してください。
-
func_filepath_size
ADB_CSVREAD関数およびADB_AUDITREAD関数に指定するファイルパス名の最大長
-
csvread_num
ADB_CSVREAD関数の数
-
auditread_num
ADB_AUDITREAD関数の数
-
- OPE_WORK_SIZE:演算管理領域
-
次に示す計算式から求めてください。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
ただし,次に示すどの項目も指定していない場合は0になります。
-
四則演算
-
論理演算
-
CASE式
-
スカラ関数
-
ANYを指定した配列要素参照
-
行値構成子を指定したIN述語
計算式(単位:バイト)
-
arith_num
各値式中の四則演算子(+,−,*または/)の数の最大値
-
concat_num
各値式中の連結演算子(+または||)およびスカラ関数CONCATの数の合計値の中で最大の値
-
logical_num
探索条件中の論理演算子の数の最大値
-
case_size
CASE式の結果長の合計値(単位:バイト)
-
sclfunc_size
スカラ関数の結果長の合計値(単位:バイト)
-
array_any_num
ANYを指定した配列要素参照の数
-
array_any_id_num
ANYを指定した配列要素参照で,異なる識別番号を指定した配列要素参照の数(同じ識別番号を指定した配列要素参照は全部で1と数える)と,識別番号を省略した配列要素参照の数の合計
-
array_any_max_cardinality
ANYを指定した配列要素参照に指定した配列データの最大要素数
該当する配列データが複数ある場合は,その中で最も大きい最大要素数で計算してください。
-
inpred_rvc_elm_num
IN述語に指定した行値構成子の行値構成子要素数の最大値
-
- HASHGRP_SIZE:ハッシュグループ化作業領域
-
次に示す計算式から求めてください。ただし,サーバ定義のadb_sql_exe_hashgrp_area_sizeオペランドに0を指定している場合,またはSQLにGROUP BY句と集合関数が指定されていない場合は0になります。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
HASHGRP_SIZE= 160+24×(grp_col_num+set_func_num)+sum_grp_size +sum_set_func_size+hashgrp_byte +↓(hashgrp_byte×4−MIN(8,192×128, ↓(hashgrp_byte×10)÷25↓)) ÷(↑(16+↑(sum_grp_size)÷4↑×4 +sum_set_func_size)÷8↑×8)↓
-
grp_col_num
GROUP BY句に指定したグループ化列の数
-
set_func_num
集合関数の数
-
sum_grp_size
グループ化列のデータ長の合計値
-
sum_set_func_size
集合関数の結果のデータ長の合計値
-
hashgrp_byte
ハッシュグループ化領域サイズの指定値
次に示す計算式から求めてください。
サーバ定義adb_sql_exe_hashgrp_area_sizeオペランドの指定値×1,024
-
- HASHTBL_CNCT_SIZE:ハッシュテーブルを使用した検索時の管理領域
-
SQL文中に,次に示すどれかを含む場合は求めてください。すべて含まない場合は,0になります。また,最大SQL処理リアルスレッド数,またはハッシュテーブル領域サイズが0の場合も,0になります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
-
GROUP BY句
-
DISTINCT集合関数
-
SELECT DISTINCT
-
UNIONまたはUNION DISTINCT
計算式(単位:バイト)
-
sql_rthd_num
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
-
hashtbl_row_num
ハッシュテーブルの最大行長
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
-
hashtbl_col_num
SQL文中の指定内容に従って求めた値のうち,最大値を代入
■複数の表を=で結合する問合せ指定
ハッシュテーブル列数の最大のものになります。問合せ指定ごとのハッシュテーブルの列数を求める場合,=で結合している各表に対して選択式および探索条件中に指定したすべての列の数を求めてください。そのあとで求めた表ごとの値のうち,最小値を除いた合計値を求めてください。
■副問合せ
副問合せごとに,次に示す値の合計を求めてください。その中で最大の値が副問合せの値になります。
・副問合せの選択式に指定した列数
・副問合せに指定した集合関数の数
・探索条件中の外への参照列を含む述語に指定した列の数
■GROUP BY句,およびDISTINCTを指定した集合関数
GROUP BY句,およびDISTINCT集合関数を指定した問合せごとに次に示す値の合計を求めてください。その中で最大の値がGROUP BY句およびDISTINCTを指定した集合関数の値になります。
・GROUP BY句に指定したグループ化列の数
・集合関数の数
■SELECT DISTINCT
SELECT DISTINCTを指定した問合せ指定ごとに,次に示す値を求めてください。その中で最大の値がSELECT DISTINCTの値になります。
・選択式に指定した列数
■UNIONまたはUNION DISTINCT
UNIONまたはUNION DISTINCTを指定した問合せ式本体ごとに,次に示す値を求めてください。その中で最大の値が,UNIONまたはUNION DISTINCTの値になります。
・問合せ式本体の結果導出される表の列の列数
-
bucket_num
ハッシュテーブルを使用した検索時に作成される作業表の数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
-
hashtbl_num
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
-
- HASHFLT_CNCT_SIZE:ハッシュフィルタ管理領域
-
次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は,0になります。また,ハッシュフィルタ領域サイズ(サーバ定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値)が0の場合も,0になります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
計算式(単位:バイト)
HASHFLT_CNCT_SIZE = 256+256×hashflt_num
-
hashflt_num
SQL文中のハッシュフィルタの総数
次のすべての値の合計値を求めてください。
・複数の表を=で結合する問合せ指定の,=指定の結合条件の数
・外への参照列を含まない副問合せの数
・外への参照列を含む副問合せの,外への参照列を含む=条件の数
-
- HASHRNG_CNCT_SIZE:ハッシュ検索でのレンジインデクスの条件評価の管理領域
-
次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は,0になります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
計算式(単位:バイト)
HASHRNG_CNCT_SIZE = 64+136×hash_retrieval_rngidx_num+56×hash_cond_rngidx_num
- hash_retrieval_rngidx_num
-
SQL文中のハッシュ検索のうち,レンジインデクスを使用するハッシュ検索の総数
次のすべての値の合計値を求めてください。この合計数が0の場合,HASHRNG_CNCT_SIZEは0になります。
-
複数の表を=で結合する問合せ指定のうち,レンジインデクスの構成列を=に指定している各問合せ指定について,次の計算式で求めた値
=で結合する表の総数 - =で結合する問合せ指定の総数
-
レンジインデクスの構成列を左側に指定している限定述語の数
-
レンジインデクスの構成列を左側に指定し,右側に表副問合せを指定しているIN述語の数
-
上記2つの副問合せ以外で,次のすべての条件を満たす副問合せの数
・探索条件中に=で外への参照列を指定している
・指定した外への参照列がレンジインデクスの構成列である
-
- hash_cond_rngidx_num
-
SQL文中のハッシュ検索のうち,レンジインデクスを使用する条件の総数
次のすべての値の合計値を求めてください。
-
複数の表を=で結合する問合せ指定のうち,レンジインデクスの構成列を指定している=結合条件の数
-
レンジインデクスの構成列を左側に指定している限定述語の数
-
レンジインデクスの構成列を左側に指定し,右側に表副問合せを指定しているIN述語の数
-
上記2つの副問合せ以外で,次のすべての条件を満たす=条件の数
・探索条件中に=で外への参照列を指定している
・指定した外への参照列がレンジインデクスの構成列である
-
-
- GRSETS_CNCT_SIZE:DISTINCT集合関数の作業領域
-
SQL文中に,引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含む場合に求めてください。引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含まない場合は,0になります。
計算式(単位:バイト)
GRSETS_CNCT_SIZE = (1,640+8,328×dset_func_num+sql_rthd_num×(664+72×dset_func_num) )×dset_query_num
- dset_func_num
-
引数の異なるDISTINCT集合関数の数
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値)
- dset_query_num
-
引数の異なるDISTINCT集合関数を指定した問合せ指定の数
- HASHLOCAL_CNCT_SIZE:部分集計管理領域
-
次に示すどれかの指定がSQL文中にある場合に求めてください。指定がない場合は,0になります。
-
GROUP BY句
-
DISTINCT集合関数
-
SELECT DISTINCT
-
UNIONまたはUNION DISTINCT
計算式(単位:バイト)
HASHLOCAL_CNCT_SIZE= 128+8×hashtbl_num+192×hashtbl_aggr_num+64×hashtbl_aggr_col_num
- hashtbl_num
-
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- hashtbl_aggr_num
-
SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索の総数
次に示す数の合計を求めてください。
-
GROUP BY句の指定数
-
DISTINCT集合関数を指定した問合せ指定の数
-
SELECT DISTINCTの指定数
-
UNION,またはUNION DISTINCTの指定数
-
- hashtbl_aggr_col_num
-
SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索のうち,集計に関係する列の総数
次に示す数の合計を求めてください。
-
GROUP BY句の指定を含む場合
グループ化列の数,および集合関数の数の合計数
-
DISTINCT集合関数を指定した問合せ指定を含む場合
グループ化列の数,引数の異なるDISTINCT集合関数の数,およびDISTINCT集合関数ではない集合関数の数の合計数
-
SELECT DISTINCTの指定を含む場合
選択式に指定した列数
-
UNION,またはUNION DISTINCTを指定した問合せ式本体を含む場合
問合せ式本体によって導出される表の列の数
-
-
- DHJOIN_CNCT_SIZE:ハッシュジョイン分割実行管理領域
-
SQL文中に,次のすべての条件に該当する問合せ指定を含む場合に求めてください。条件に該当する問合せ指定を含まない場合は,0になります。
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,複数の表を=で結合する問合せ指定である
-
1.の条件の表に,マルチチャンク表が2つ以上含まれている
-
2.の条件のマルチチャンク表を結合する=の1つに,レンジインデクスを定義しているマルチチャンク表の列が指定されている
計算式(単位:バイト)
DHJOIN_CNCT_SIZE= 128+dhjoin_tbl_num×64+(dhjoin_tbl_num-dhjoin_query_num)×832
- dhjoin_tbl_num
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表の数
- dhjoin_query_num
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表が指定されている問合せ指定の数
-
- IN_PRD_SIZE:IN述語,限定述語実行管理領域
-
次に示す計算式から求めてください。ただし,IN述語,限定述語を指定していない場合は0になります。なお,変数in_pred_numが0の場合もIN_PRD_SIZEは0になります。
計算式(単位:バイト)
IN_PRD_SIZE= 48+in_pred_num×(96+sql_rthd_num×48)
sql_rthd_num:サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
in_pred_num:次に示す条件を満たす述語の数の合計値
-
IN述語の場合
左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
限定述語の場合
=ANYまたは=SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
- LIKE_PRD_SIZE:LIKE述語実行管理領域
-
次に示す計算式から求めてください。ただし,LIKE述語を指定していない場合は0になります。また,すべてのLIKE述語の一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれない場合は0になります。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
LIKE_PRD_SIZE= 16+like_param_num×(64+like_param_size×2)
-
like_param_num
パターン文字列に?パラメタを指定したLIKE述語の数。ただし,一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれないLIKE述語は除きます。
-
like_param_size
パターン文字列に指定した?パラメタが仮定するデータの長さの最大値。ただし,一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれないLIKE述語の分は除きます。
-
- REG_SIZE:日時情報取得関数およびユーザ情報取得関数の管理領域
-
次に示す計算式から求めてください。ただし,日時情報取得関数およびユーザ情報取得関数を指定していない場合は0になります。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
REG_SIZE= 24×date_spec+32×time_spec+32×timestmp_spec+120×user_spec+24
-
date_spec
CURRENT_DATEを指定した場合は1,指定していない場合は0
-
time_spec
CURRENT_TIMEを指定した場合は1,指定していない場合は0
-
timestmp_spec
CURRENT_TIMESTAMPを指定した場合は1,指定していない場合は0
-
user_spec
CURRENT_USERを指定した場合は1,指定していない場合は0
-
- WRK_TABLE_OPE_SIZE
-
作業表の処理領域
次に示す計算式から求めてください。ただし,作業表が作成されない場合は0になります。
計算式(単位:バイト)
-
arrray_col_num
配列型の列の列数
作業表の構成列に配列型の列が存在しない場合は0を代入してください。
-
clt_wrk_page_num
クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値(ただし,adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値)
-
- LMTWRK_SIZE
-
作業表の管理領域
ただし,LIMIT句を指定していない場合,または作業表が作成されない場合は0になります。
計算式(単位:バイト)
LMTWRK_SIZE= ↑(96×↑(offset_num+limit_num)÷↓(wrk_page_size−64)÷ROWSZ↓↑ +(4+ROWSZ)×(offset_num+limit_num))÷1,024↑
-
offset_num
LIMIT句のオフセット行数の指定値
-
limit_num
LIMIT句のリミット行数の指定値
-
wrk_page_size
作業表用DBエリアのページサイズ(単位:バイト)
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」にある「表6‒3 DBエリアのページサイズ」を参照してください。
-
ROWSZ
作業表の行長(単位:バイト)
作業表の行長については,「5.9.2 作業表を格納するために必要な基本行用ページ数の求め方」の変数ROWSZの計算式を基に求めてください。ただし,変数col_size(i)を求める場合で,かつデータ型が可変長の列のときは,d(実際のデータ長)にn(定義長)を代入してください。
-
- COR_QUERY_SIZE
-
外への参照列を含む副問合せの作業領域
16,777,216バイトを代入してください。ただし,外への参照列を含む副問合せを指定していない場合は0を代入してください。
- TXT_WORK_SIZE
-
テキストインデクスの作業領域
次に示す計算式から求めてください。ただし,テキストインデクスを定義していない場合,またはテキストインデクスを使用しない場合は0を代入してください。
計算式(単位:バイト)
-
scan_str_num
テキストインデクスを使用するLIKE述語のパターン文字列に指定した文字列の文字数
-
- CSVREAD_WORK_SIZE
-
ADB_CSVREAD関数の検索作業領域
次に示す計算式から求めてください。ただし,ADB_CSVREAD関数を使用しない場合は0を代入してください。
計算式(単位:バイト)
- decomp_areasize
-
伸長処理領域サイズ(単位:バイト)
入力データファイルの伸長処理に使用する領域サイズです。ADB_CSVREAD関数の圧縮形式オプションCOMPRESSION_FORMATの指定値によって,代入する値が異なります。
伸長処理領域サイズについては,次に示す表から求めてください。
表6‒5 伸長処理領域サイズの一覧 項番
圧縮形式オプションCOMPRESSION_FORMATの指定値
伸長処理領域サイズ(単位:バイト)
1
GZIP
112
2
NONE
40
- col_num
-
入力データファイル中から取り出すフィールドデータの数
- temp_coldata_areasize(i)
-
一時格納領域サイズ(単位:バイト)
入力データファイル中から取り出したi番目のフィールドデータを一時的に格納する領域サイズです。iは表関数導出表の列名リストの順番に対応します。
一時格納領域サイズについては,次に示す表から求めてください。
表6‒6 各データ型の一時格納領域サイズの一覧 項番
分類
データ型
一時格納領域サイズ(単位:バイト)
1
数データ
INTEGER
24
2
BIGINT
3
SMALLINT
16
4
DECIMAL
48
5
NUMERIC
6
DOUBLE PRECISION
512
7
FLOAT
8
文字データ
CHAR
((2+定義長×2+7)÷8)×8
9
VARCHAR
((2+定義長×2+7)÷8)×8
10
日時データ
DATE
16
11
TIME
24
12
TIMESTAMP
40
13
バイナリデータ
BINARY
入力データファイル中の記述形式が16進の場合
((2+定義長×2+7)÷8)×8
14
入力データファイル中の記述形式が2進の場合
((2+定義長×8+7)÷8)×8
15
VARBINARY
入力データファイル中の記述形式が16進の場合
((2+定義長×2+7)÷8)×8
16
入力データファイル中の記述形式が2進の場合
((2+定義長×8+7)÷8)×8
- REGEXP_WORK_SIZE
-
正規表現の評価用作業領域(単位:バイト)
LIKE_REGEX述語を指定していない場合は,0を代入してください。
変数REGEXP_WORK_SIZEは,LIKE_REGEX述語のパターン文字列に指定された正規表現内に,0文字の繰り返しが存在するかどうかで計算式が異なります。
0文字の繰り返しとは,メタ文字や繰り返し因子の組み合わせによって,該当する文字が0文字になる可能性がある記述を指します。例えば,「*」,「?」,「{0,}」,および「{0,x}」(x:1以上の整数)をネストした記述です。
- 0文字の繰り返しになる記述例
-
(a*)+,(c{0,2})*,(e?){3}
変数REGEXP_WORK_SIZEを求める計算式を,それぞれ次に示します。
計算式(正規表現内に0文字の繰り返しが存在しない場合)
計算式(正規表現内に0文字の繰り返しが存在する場合)
- 重要
-
正規表現内に0文字の繰り返しが存在する場合,大量のメモリを使用するおそれがあります。ただし,0文字となる可能性がある場合でも,量指定子や繰り返し因子をネストして記述しなければ,大量のメモリを使用しません。
- push_instr_num
-
次に示す計算式で求めてください。
変数C(繰り返し因子に指定された繰り返しの数)の求め方を,次の表に示します。
表6‒7 繰り返し因子に指定された繰り返しの数の求め方 項番
繰り返し因子に指定された内容
変数Cに代入する値
例
1
上限値と下限値の両方が指定されている
「上限値−下限値」で求めた値
「{10,20}」と指定されている場合は,10を代入します。
2
次に示す条件を満たしている
-
下限値だけが指定されている
-
下限値の後ろにコンマが存在しない
下限値
「{10}」と指定されている場合は,10を代入します。
3
次に示す条件を満たしている
-
下限値だけが指定されている
-
下限値の後ろにコンマが存在する
「256−下限値」で求めた値
「{10,}」と指定されている場合は,246を代入します。
-
- scan_str_num
-
パターン文字列に指定した文字列の文字数
- ostrrep_instr_num
-
0文字の繰り返しの合計値
正規表現の記述例と,変数REGEXP_WORK_SIZEの計算式の例を,次に示します。
- 正規表現の記述例1
-
KFAA11[0-9]{3}-E
計算式の例(単位:バイト)
- 正規表現の記述例2
-
KFAA6000[2-9]-E.*uid=12345.*
計算式の例(単位:バイト)
- RECURSIVE_QUERY_CNCT_SIZE
-
再帰的問合せ管理領域(単位:バイト)
SQL文中に再帰的問合せを含まない場合は,0としてください。
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値)
- recursive_query_num
-
SQL文中に指定した再帰的問合せの数
- recurmb_query_num
-
再帰的メンバ内に指定したFROM句の数
- recurmb_setop_num
-
再帰的メンバ内に指定した集合演算子の数
- recurmb_list_num
-
再帰的メンバ内に指定した次の数の合計値
-
ウィンドウ関数の指定数
-
FROM句に複数の表参照を指定した問合せの指定数
-
結合表の指定数
-
副問合せの指定数
-
- recurmb_subquery_num
-
再帰的メンバ内に指定した副問合せの数
- recurmb_hashtbl_num
-
再帰的メンバ内に指定したハッシュテーブル数
詳細については,マニュアルHADB AP開発ガイドのSQLを実行した場合に作成される作業表についてを参照してください。
- RANDOMCURSOR_WORK_SIZE
-
スカラ関数RANDOMCURSOR用の作業領域
SQL文中にスカラ関数RANDOMCURSORを含む場合に,次に示す値を代入してください。ただし,SQL文中にスカラ関数RANDOMCURSORを含まない場合は0を代入してください。
値(単位:バイト)
RANDOMCURSOR_WORK_SIZE= 3,176
- RANDOM_NUM_WORK_SIZE
-
擬似乱数生成用の作業領域(単位:バイト)
RANDOM_NUM_WORK_SIZE = RANDOM_NUM_UNIFORM_WORK_SIZE + RANDOM_NUM_NORMAL_WORK_SIZE + RANDOMROW_WORK_SIZE
- RANDOM_NUM_UNIFORM_WORK_SIZE
-
一様分布に従う擬似乱数生成用の作業領域
SQL文中にスカラ関数RANDOMを含む場合に,次に示す値を代入してください。ただし,SQL文中にスカラ関数RANDOMを含まない場合は0を代入してください。
値(単位:バイト)
RANDOM_NUM_UNIFORM_WORK_SIZE= 3,176
- RANDOM_NUM_NORMAL_WORK_SIZE
-
正規分布に従う擬似乱数生成用の作業領域
SQL文中にスカラ関数RANDOM_NORMALを含む場合に,次に示す値を代入してください。ただし,SQL文中にスカラ関数RANDOM_NORMALを含まない場合は0を代入してください。
値(単位:バイト)
RANDOM_NUM_NORMAL_WORK_SIZE= 6,288
- RANDOMROW_WORK_SIZE
-
スカラ関数RANDOMROW用の作業領域
SQL文中にスカラ関数RANDOMROWを含む場合に,次に示す値を代入してください。ただし,SQL文中にスカラ関数RANDOMROWを含まない場合は0を代入してください。
値(単位:バイト)
RANDOMROW_WORK_SIZE= 3,176
- SORTGRP_CNCT_SIZE
-
ソートグループ化の作業領域
次のどちらかの集合関数をSQL文中に指定する場合に求めてください。どちらの指定もない場合は,0を代入してください。
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
LAG関数
-
LEAD関数
計算式(単位:バイト)
SORTGRP_CNCT_SIZE= 352×Σ(sortgrp_wrk_num)×sql_rthd_num +LISTAGG_CNCT_SIZE+ARRAY_AGG_CNCT_SIZE +LAG_LEAD_CNCT_SIZE
-
- Σ(sortgrp_wrk_num)
-
SQL文中にLISTAGG集合関数,またはARRAY_AGG集合関数を指定した問合せ指定ごとに変数sortgrp_wrk_numを求めてください。そして,それぞれ求めた値を合計してください。
- sortgrp_wrk_num
-
ソートグループ化の作業領域の個数
次の数を合計したものを代入してください。
-
ALL(省略値)を指定したLISTAGG集合関数の指定数
-
DISTINCTを指定したLISTAGG集合関数の指定数×2
-
ARRAY_AGG集合関数の指定数
-
DISTINCT集合関数の指定数
-
逆分布関数の指定数
-
LAG関数の指定数
-
LEAD関数の指定数
-
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- LISTAGG_CNCT_SIZE
-
LISTAGG集合関数の作業領域
SQL文中に,LISTAGG集合関数を含む場合に求めてください。LISTAGG集合関数を含まない場合は,0を代入してください。
計算式(単位:バイト)
LISTAGG_CNCT_SIZE=128×listagg_num×sql_rthd_num
- listagg_num
-
SQL文中に指定したLISTAGG集合関数の数
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- ARRAY_AGG_CNCT_SIZE
-
ARRAY_AGG集合関数の作業領域
ARRAY_AGG集合関数をSQL文中に指定する場合に求めてください。ARRAY_AGG集合関数を指定しない場合は,0を代入してください。
計算式(単位:バイト)
ARRAY_AGG_CNCT_SIZE= Σ{array_agg_num×((array_agg_num+1)×sql_rthd_num×104+RESULT_WORK_SIZE)}
ARRAY_AGG_CNCT_SIZEを算出するには,ARRAY_AGG集合関数を指定した問合せ指定ごとに,次の値を求めてください。そして,それぞれ求めた値を合計してください。
array_agg_num×((array_agg_num+1)×sql_rthd_num×104+RESULT_WORK_SIZE)
- array_agg_num
-
問合せ指定に指定したARRAY_AGG集合関数の数
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- RT_AGGR_CNCT_WORK_SIZE
-
リアルスレッド単位の集計作業領域
SQL文中に,次に示すどれかの要素を含む場合に求めてください。含まない場合は,0を代入してください。
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
逆分布関数
-
ウィンドウ関数
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
RT_AGGR_CNCT_WORK_SIZE= (400+328×sql_rthd_num)×rt_aggr_num +Σ(sum_grp_size)×sql_rthd_num
-
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- rt_aggr_num
-
該当する要素の数
- Σ(sum_grp_size)
-
SQL文中に該当する要素を指定した問合せ指定ごとに変数sum_grp_sizeを求めてください。そして,それぞれ求めた値を合計してください。
- sum_grp_size
-
SQL文中に含む要素によって,値が異なります。どちらの要素も含む場合は,それぞれ求めた値を合計してください。
-
LISTAGG集合関数,ARRAY_AGG集合関数または逆分布関数の場合
グループ化列のデータ長の合計
-
ウィンドウ関数の場合
ウィンドウ分割句に指定された列のデータ長の合計
-
- LAG_LEAD_CNCT_SIZE
-
LAG関数およびLEAD関数の作業領域
SQL文中にLAG関数またはLEAD関数を指定する場合に求めてください。指定しない場合は,0を代入してください。
計算式(単位:バイト)
LAG_LEAD_CNCT_SIZE=(400×lag_num+352×lead_num)×sql_rthd_num
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- lag_num
-
SQL文中に指定するLAG関数の数
- lead_num
-
SQL文中に指定するLEAD関数の数
- PRL_CNCT_SIZE
-
SQLパラレル実行機能用管理領域
SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は,0を代入してください。
計算式(単位:バイト)
PRL_CNCT_SIZE= 1,438+8×(1+order_by_num+group_by_num×7) +128×prl_scan_num+202×node_num +PRL_NDMRG_CNCT_SIZE+PRL_HASH_CNCT_SIZE +PRL_SCAN_NODE_MAP_SIZE
- order_by_num
-
ORDER BY句を指定する場合は1を代入してください。ORDER BY句を指定しない場合は0を代入してください。
- group_by_num
-
GROUP BY句の指定数を代入してください。GROUP BY句を指定しない場合は0を代入してください。
- prl_scan_num
-
1を代入してください。
- node_num
-
マルチノード構成のノード数
- PRL_NDMRG_CNCT_SIZE
-
ノード間マージの管理領域
SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は,0を代入してください。
計算式(単位:バイト)
PRL_NDMRG_CNCT_SIZE= (128+PRL_MAIN_NDMRG_CNCT_SIZE+PRL_NDMRG_SORT_SIZE)×prl_scan_num
- prl_scan_num
-
1を代入してください。
- PRL_MAIN_NDMRG_CNCT_SIZE
-
SQLメインノードのノード間マージの管理領域
SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は,0を代入してください。
計算式(単位:バイト)
PRL_MAIN_NDMRG_CNCT_SIZE= 8,448+(8,754+RESULT_WORK_SIZE+MAX(131,072 ,max_def_row_size)×2) ×node_num
- max_def_row_size
-
選択式の結果のデータ長の合計値を問合せ指定ごとに求めてください。そして,求めた値の最大値を代入してください。
- node_num
-
マルチノード構成のノード数
- PRL_NDMRG_SORT_SIZE
-
ノード間マージの結果をソートする際の管理領域
SQLパラレル実行機能が適用され,かつSQL文中にORDER BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合,またはORDER BY句を含まない場合は,0を代入してください。
計算式(単位:バイト)
PRL_NDMRG_SORT_SIZE=64+16×node_num
- node_num
-
マルチノード構成のノード数
- PRL_HASH_CNCT_SIZE
-
ノード間共有するハッシュテーブルを使用した検索時の管理領域
SQLパラレル実行機能が適用され,かつSQL文中にGROUP BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合,またはGROUP BY句を含まない場合は,0を代入してください。また,最大SQL処理リアルスレッド数,またはハッシュテーブル領域サイズが0の場合も,0を代入してください。
計算式(単位:バイト)
PRL_HASH_CNCT_SIZE= 4,175+8×hashtbl_num+(12,757+(8,875+72×sql_rthd_num)×node_num) ×prl_hashtbl_num
- hashtbl_num
-
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値)
- node_num
-
マルチノード構成のノード数
- prl_hashtbl_num
-
GROUP BY句の数
- PRL_SCAN_NODE_MAP_SIZE
-
検索ノード決定情報の管理領域
クラウドストレージ機能を使用していて,かつSQLパラレル実行機能が適用される場合に求めてください。クラウドストレージ機能を使用していない場合,またはSQLパラレル実行機能が適用されない場合は,0を代入してください。
計算式(単位:バイト)
PRL_SCAN_NODE_MAP_SIZE=2,944+1,600×node_num
- node_num
-
マルチノード構成のノード数
- IN_PRD_RVCHASH_TOTAL_SIZE
-
全行値構成子用のIN述語実行管理領域
行値構成子を指定したIN述語を指定していない場合は,0を代入してください。
計算式(単位:バイト)
IN_PRD_RVCHASH_TOTAL_SIZE= 64+16×↑inpred_rvc_num ÷ 2↑+Σ(IN_PRD_RVCHASH_SIZE)
- Σ(IN_PRD_RVCHASH_SIZE)
-
行値構成子を指定したIN述語ごとに変数IN_PRD_RVCHASH_SIZEを求めてください。そして,それぞれ求めた値を合計してください。
- inpred_rvc_num
-
行値構成子を指定したIN述語の数
- IN_PRD_RVCHASH_SIZE
-
行値構成子用のIN述語実行管理領域
行値構成子を指定したIN述語ごとに求めてください。
計算式(単位:バイト)
IN_PRD_RVCHASH_SIZE=64+40×inpred_condval_num
- inpred_condval_num
-
IN述語の条件値の数(IN述語の右側に指定した行値構成子の数)
- IN_PRD_RVC_SCOND_SIZE
-
行値構成子用のIN述語(サーチ条件時)実行管理領域
次に示す条件をすべて満たすIN述語を指定している場合に求めてください。指定していない場合は0を代入してください。
-
行値構成子を指定している
-
IN述語の左側の行値構成子要素に,B-treeインデクスの複数のインデクス構成列のうち2つ以上のインデクス構成列を指定している
-
条件2.で指定しているB-treeインデクスのインデクス構成列の行値構成子要素に対応するIN述語の右側の行値構成子要素に,次のどれかを1つ以上指定している
-
?パラメタ
-
日時情報取得関数
-
ユーザ情報取得関数
-
計算式(単位:バイト)
IN_PRD_RVC_SCOND_SIZE= 79+8×SCAN_MNG_NUM +Σ{8×(inpred_condval_num+inpred_notsubq_num)+158}
-
- Σ{8×(inpred_condval_num+inpred_notsubq_num)+158}
-
上記の条件1.~3.をすべて満たすIN述語ごとに次の値を求めてください。そして,それぞれ求めた値を合計してください。
8×(inpred_condval_num+inpred_notsubq_num)+158
- inpred_condval_num
-
上記の条件1.~3.をすべて満たすIN述語の条件値の数(IN述語の右側に指定した行値構成子の数)
- inpred_notsubq_num
-
上記の条件1.~3.をすべて満たすIN述語が指定された問合せ指定(またはWHERE 探索条件)の中で,右側が副問合せではないIN述語の数
- SCAN_MNG_NUM
-
SQL文実行時の検索処理管理領域の数
SCAN_MNG_NUM= query_spec_num+additional_query_num+drvtbl_num+1 +hashtbl_num×5
- query_spec_num
-
SQL文中に指定された問合せ指定の数
- additional_query_num
-
SQL文中に指定された次の個数を合計した値
-
逆分布関数
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
ウィンドウ関数
-
集合演算
-
ORDER BY句
-
- drvtbl_num
-
SQL文中に指定された導出表の数
- hashtbl_num
-
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- SCAN_CHUNK_MNG_SIZE
-
検索対象となるチャンクの管理領域
SQL文中にマルチチャンク表を指定している場合に求めてください。指定していない場合は0を代入してください。
計算式(単位:バイト)
SCAN_CHUNK_MNG_SIZE= 48+↑(8×mchunk_tbl_num)÷16↑×16+Σ(32+32×chunk_num)
- mchunk_tbl_num
-
SQL文中に指定されたマルチチャンク表の数
- Σ(32+32×chunk_num)
-
SQL文中に指定するマルチチャンク表ごとに「32+32×chunk_num」を計算し,その合計値を求めてください。
- chunk_num
-
検索対象のマルチチャンク表のチャンク数
- PROC_THD_SIZE:SQL処理リアルスレッド管理領域
-
次に示す計算式から求めてください。なお,変数RESULT_WORK_SIZE,変数OPE_WORK_SIZE,変数HASHGRP_SIZE,変数COR_QUERY_SIZE,変数REGEXP_WORK_SIZE,および変数RANDOM_NUM_WORK_SIZEについては,上記にある各計算式から求めた値を代入してください。
計算式(単位:キロバイト)
- 重要
-
-
ビュー表または問合せ名を指定する場合の留意事項
SQL文中にビュー表または問合せ名を指定する場合は,それぞれに対応する内部的な導出表を適用したものとして見積もりを行ってください。ただし,再帰的問合せ内にある,対象となる再帰的問合せを参照している再帰的問合せ名については,その再帰的問合せの結果が格納される作業表と仮定して見積もりを行ってください。
-
アーカイブマルチチャンク表を指定する場合の留意事項
SQL文中にアーカイブマルチチャンク表を指定する場合は,導出表に等価変換されたものとして見積もりを行ってください。アーカイブマルチチャンク表の等価変換については,マニュアルHADB AP開発ガイドのアーカイブマルチチャンク表を検索するSQL文の等価変換を参照してください。
-
- tbl_num:指定した表数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- sql_rthd_num:
-
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
- idx_col_num:
-
検索に使用するB-treeインデクスおよびテキストインデクスの構成列数
- idx_size:
-
使用する各B-treeインデクスおよびテキストインデクスの構成列の定義長の合計値
- uthd_num:
-
サーバ定義adb_sys_uthd_numオペランドの指定値
- Σ_[i =cor_query](HASHGRP_SIZE(i)):
-
SQL文中の外への参照列を含む副問合せごとにHASHGRP_SIZEを計算した合計値(単位:バイト)
- Σ_[j =not_cor_query](HASHGRP_SIZE(j)):
-
SQL文中の外への参照列を含む副問合せではない問合せ指定単位にHASHGRP_SIZEを計算した合計値(単位:バイト)
- HASHTBL_PROC_SIZE:ハッシュテーブルを使用した検索時のリアルスレッド管理領域
-
SQL文中に,次に示すどれかを含む場合は求めてください。すべて含まない場合は,0になります。また,最大SQL処理リアルスレッド数,またはハッシュテーブル領域サイズが0の場合も,0となります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
-
GROUP BY句
-
DISTINCT集合関数
-
SELECT DISTINCT
-
UNIONまたはUNION DISTINCT
計算式(単位:バイト)
-
hashtbl_byte
次に示す計算式で求めた値
-
sql_rthd_num
クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値
-
uthd_num
サーバ定義adb_sys_uthd_numオペランドの指定値
-
clt_wrk_page_num
クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値(ただし,adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値)
-
hashtbl_num
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
-
- HASHFLT_PROC_SIZE:SQL処理リアルスレッド用ハッシュフィルタ管理領域
-
次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は,0になります。また,ハッシュフィルタ領域サイズ(サーバ定義adb_sql_exe_hashflt_area_sizeオペランドの指定値)が0の場合も,0になります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
計算式(単位:バイト)
HASHFLT_PROC_SIZE = ↑hashflt_byte÷sql_rthd_num↑+136+192×hashflt_num
-
hashflt_byte
次に示す計算式で求めた値
サーバ定義adb_sql_exe_hashflt_area_sizeオペランドの指定値×1,024×1,024
-
sql_rthd_num
クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値
-
hashflt_num
SQL文中のハッシュフィルタの総数
次のすべての値の合計値を求めてください。
・複数の表を=で結合する問合せ指定の,=指定の結合条件の数
・外への参照列を含まない副問合せの数
・外への参照列を含む副問合せの,外への参照列を含む=条件の数
-
- HASHRNG_PROC_SIZE:ハッシュ検索でのSQL処理リアルスレッド用のレンジインデクスの条件評価の管理領域
-
次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は,0になります。
-
複数の表を=で結合する問合せ指定
-
副問合せ
計算式(単位:バイト)
HASHRNG_PROC_SIZE = 64+72×hash_retrieval_rngidx_num+64×hash_cond_rngidx_num +Σ(↑(hash_cond_rngidx_len)÷16↑×32)
- hash_retrieval_rngidx_num
-
SQL文中のハッシュ検索のうち,レンジインデクスを使用するハッシュ検索の総数
次のすべての値の合計値を求めてください。この合計数が0の場合,HASHRNG_PROC_SIZEは0になります。
-
複数の表を=で結合する問合せ指定のうち,レンジインデクスの構成列を=に指定している各問合せ指定について,次の計算式で求めた値
=で結合する表の総数 - =で結合する問合せ指定の総数
-
レンジインデクスの構成列を左側に指定している限定述語の数
-
レンジインデクスの構成列を左側に指定し,右側に表副問合せを指定しているIN述語の数
-
上記2つの副問合せ以外で,次のすべての条件を満たす副問合せの数
・探索条件中に=で外への参照列を指定している
・指定した外への参照列がレンジインデクスの構成列である
-
- hash_cond_rngidx_num
-
SQL文中のハッシュ検索のうち,レンジインデクスを使用する条件の総数
次のすべての値の合計値を求めてください。
-
複数の表を=で結合する問合せ指定のうち,レンジインデクスの構成列を指定している=結合条件の数
-
レンジインデクスの構成列を左側に指定している限定述語の数
-
レンジインデクスの構成列を左側に指定し,右側に表副問合せを指定しているIN述語の数
-
上記2つの副問合せ以外で,次のすべての条件を満たす=条件の数
・探索条件中に=で外への参照列を指定している
・指定した外への参照列がレンジインデクスの構成列である
-
- Σ(↑(hash_cond_rngidx_len)÷16↑×32)
-
SQL文中のハッシュ検索のうち,レンジインデクスを使用する条件ごとに値を算出し,その値を合計してください。
- hash_cond_rngidx_len
-
ハッシュ検索でレンジインデクスを使用する条件ごとに次の値を求めてください。
-
複数の表を=で結合する問合せ指定のうち,レンジインデクスの構成列を指定している=結合条件について,その=結合条件の左右に指定した値式の結果のデータ長の,どちらか大きい方の値
-
レンジインデクスの構成列を左側に指定している限定述語で,次のどちらか大きい方の値
・右側に指定した表副問合せの選択式の結果のデータ長の合計値
・左側に指定したレンジインデクスの構成列の列長
-
レンジインデクスの構成列を左側に指定し,右側に表副問合せを指定しているIN述語で,次のどちらか大きい方の値
・右側に指定した表副問合せの選択式の結果のデータ長の合計値
・左側に指定したレンジインデクスの構成列の列長
-
副問合せの探索条件中に指定した=条件の左右の値式の結果のデータ長のうち,どちらか大きい方の値(上記2つの副問合せに該当しない副問合せで,次の2つの条件を満たす副問合せであること)
・副問合せの探索条件中に,=で外への参照列を指定している
・指定した外への参照列がレンジインデクスの構成列である
-
-
- HASHLOCAL_PROC_SIZE:SQL処理リアルスレッド用の部分集計管理領域
-
次に示すどれかの指定がSQL文中にある場合に求めてください。指定がない場合は,0になります。
-
GROUP BY句
-
DISTINCT集合関数
-
SELECT DISTINCT
-
UNIONまたはUNION DISTINCT
計算式(単位:バイト)
HASHLOCAL_PROC_SIZE= 64+8×hashtbl_num+2,097,280×hashtbl_aggr_num
- hashtbl_num
-
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- hashtbl_aggr_num
-
SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索の総数
次に示す数の合計を求めてください。
-
GROUP BY句の指定数
-
DISTINCT集合関数を指定した問合せ指定の数
-
SELECT DISTINCTの指定数
-
UNION,またはUNION DISTINCTの指定数
-
-
- DHJOIN_PROC_SIZE:ハッシュジョイン分割実行のリアルスレッド管理領域
-
SQL文中に,次のすべての条件に該当する問合せ指定を含む場合に求めてください。条件に該当する問合せ指定を含まない場合は,0になります。
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,複数の表を=で結合する問合せ指定である
-
1.の条件の表に,マルチチャンク表が2つ以上含まれている
-
2.の条件のマルチチャンク表を結合する=の1つに,レンジインデクスを定義しているマルチチャンク表の列が指定されている
計算式(単位:バイト)
DHJOIN_PROC_SIZE= 64+320×(dhjoin_tbl_num-dhjoin_query_num)
- dhjoin_tbl_num
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表の数
- dhjoin_query_num
-
コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表が指定されている問合せ指定の数
-
- setop_num:SQL文中に指定した集合演算子の数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- drvtbl_num:SQL文中に指定した導出表の数
-
FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。
- in_query_num:次に示す条件を満たすIN述語,限定述語の数の合計値
-
-
IN述語の場合
右側に表副問合せを指定し,左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
限定述語の場合
=ANYまたは=SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列
-
- inprd_cor_query_num:
-
外への参照列を含む副問合せ中に指定されており,かつ変数in_query_numに示した条件を満たすIN述語,限定述語の数の合計値
- max_cor_query(X):
-
SQL文中の外への参照列を含む副問合せごとに,その副問合せ中に指定したXの最大値を代入します。
- setop_cor_query_num:
-
外への参照列を含む副問合せ中に指定されている集合演算子の数
- window_cor_query_num:外への参照列を含む副問合せ中に指定されているウィンドウ関数の数
-
外への参照列を含む副問合せ中で,1つの問合せ指定中に,引数の異なるDISTINCT集合関数を複数指定している場合は,その指定数-1で求めた値も加算してください。
- limit_cor_query_num:
-
外への参照列を含む副問合せ中に指定されているLIMIT句の数
- cor_query_num:
-
外への参照列を含む副問合せ,およびその副問合せ中に含まれる副問合せの合計値
- Σ(drvtbl_row_len×MIN(drvtbl_row_num,1,044,480)):
-
導出表を指定する場合に,導出表ごとに(drvtbl_row_len×MIN(drvtbl_row_num,1,044,480))を求めてください。そして,求めた値を合計してください。
-
drvtbl_row_len
導出表の選択式のデータ長を合計した値を代入してください。
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
-
drvtbl_row_num
導出表の行数を代入してください。行数がわからない場合は,1,044,480を代入してください。
-
- Σ(in_query_drvc_len×MIN(in_query_drvc_num,1,044,480)):
-
変数in_query_numの対象となる述語ごとに(in_query_drvc_len×MIN(in_query_drvc_num,1,044,480))を求めてください。そして,求めた値を合計してください。
-
in_query_drvc_len
変数in_query_numの対象となる述語の副問合せの選択式のデータ長を代入してください。
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
-
in_query_drvc_num
変数in_query_numの対象となる述語の副問合せの行数を代入してください。行数がわからない場合は,1,044,480を代入してください。
-
- leftouter_num:
-
LEFT OUTER JOINの指定数
- Σ(WRK_TABLE_OPE_SIZE):
-
作成される作業表単位にWRK_TABLE_OPE_SIZEを計算した合計値(単位:バイト)
次に示すことについては,「6.25 作業表に関する見積もり」およびマニュアルHADB AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。
-
SQL文の実行時に作業表が作成されるかどうか
-
作成される作業表の個数および構成列
-
- Σ(LMTWRK_SIZE):
-
作成される作業表単位にLMTWRK_SIZEを計算した合計値(単位:バイト)
次に示すことについては,「6.25 作業表に関する見積もり」およびマニュアルHADB AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。
-
LIMIT句を指定したSQL文が作業表を作成するかどうか
-
作成される作業表の個数
なお,LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は,集合演算を構成する問合せ指定ごとに,LIMIT句の指定値が適用されます。
-
- tblfunc_num
-
表関数導出表の個数
- Σ(tblfunc_filename_len+5)
-
表関数導出表ごとに(tblfunc_filename_len+5)を求めてください。そして,求めた値を合計してください。
- tblfunc_filename_len
-
アクセスするファイルのファイル名(フルパス)の長さ
- Σ((tblfunc_row_len+4)×MIN(tblfunc_row_num,65,025))
-
表関数導出表ごとに((tblfunc_row_len+4)×MIN(tblfunc_row_num,65,025))を求めてください。そして,求めた値を合計してください。
- tblfunc_row_len
-
表関数導出表の列のデータ長の合計
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
- tblfunc_row_num
-
表関数導出表の行数
行数がわからない場合は,65,025を代入してください。
- Σ(CSVREAD_WORK_SIZE)
-
ADB_CSVREAD関数を指定した表関数導出表ごとに変数CSVREAD_WORK_SIZEをバイト単位で求めてください。そして,求めた値を合計してください。
- Σ(AUDITREAD_WORK_SIZE)
-
ADB_AUDITREAD関数を指定した表関数導出表ごとに変数AUDITREAD_WORK_SIZEをバイト単位で求めてください。そして,求めた値を合計してください。
- query_num
-
問合せの数
SQL文中に指定したFROM句の数から求めてください。
また,FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数×2で求めた値を加算してください。
- tvc_num
-
SQL文中に指定した表値構成子の数
- SCAN_WORK_SIZE:検索作業領域
-
次に示す計算式から求めてください。
計算式(単位:バイト)
SCAN_WORK_SIZE = MAX(SCB_SIZE)+24
- MAX(SCB_SIZE):検索内部処理用の作業領域の最大値
-
検索する表ごとに変数SCB_SIZEを求めてください。その中で,最も大きい値を代入してください。
- SCB_SIZE:検索内部処理用の作業領域
-
次に示す計算式から求めてください。
計算式(単位:バイト)
- KEYSZ:検索に使用するB-treeインデクスのキー長
-
「5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を参照してください。
- idx_col_num
-
検索に使用するB-treeインデクスの構成列数
- logical_num
-
探索条件中の論理演算子の数の最大値
- scan_str_num
-
次に示すどちらかの文字数を代入してください。
-
テキストインデクスを使用するLIKE述語のパターン文字列に指定した文字列の文字数
-
スカラ関数CONTAINSに指定した検索文字列の文字数
なお,スカラ関数CONTAINSに,ワード検索指定のWORDCONTEXT_PREFIXを指定して,単語単位の前方一致検索を行う場合は,「検索文字列に指定した単語の数×32」で求めた値を代入してください。
パターン文字列が1文字の場合,または,パターン文字列が1,000文字を超える場合は,1,000を代入してください。
-
- txt_nest_num
-
次に示すネスト数を合計した値※
-
テキストインデクスを使用するLIKE述語のOR条件のネスト数
-
スカラ関数CONTAINSのOR条件のネスト数
-
- txt_contains_str
-
スカラ関数CONTAINSに指定した検索文字列の文字数※
- 注※
-
変数txt_nest_num,および変数txt_contains_strに代入した値の合計値の上限は1,001です。合計値が1,001を超える場合は,1,001を代入してください。
- CS_WORK_SIZE:カラムストア表検索用の作業領域
-
次に示す計算式から求めてください。カラムストア表を検索しない場合は,0になります。
計算式(単位:バイト)
- col_num
-
実表の選択式の数
- unnest_col_num
-
集まり導出表に指定する列指定の数
- in_projcol_num
-
IN述語の右側の値式に指定した列名の数
IN述語を指定していない場合,またはIN述語の右側の値式に列名を指定しない場合は,0を代入してください。
- tbl_col_num
-
表の列数
- SEGSIZE
-
DBエリアファイルを定義したDBエリアのセグメントサイズ(単位:ページ数)
次に示す計算式から求めてください。クラウドストレージ機能を使用する場合は,1,024になります。
SEGSIZE= 1セグメントの容量(単位:バイト)÷page_size
-
page_size
表が定義されているDBエリアのページサイズ(単位:バイト)
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」にある「表6‒3 DBエリアのページサイズ」を参照してください。
-
- pred_num
-
述語の数
探索条件を指定しない場合は,1を代入してください。
- branch_col_size
-
データ型が文字データ,またはバイナリデータの列の最大定義長(単位:バイト)
選択式,または探索条件に指定する列に定義長が128バイト以上の列が含まれる場合に,その定義長の最大値を代入してください。
- Σ(DECOMPRESS_WORK_SIZE)
-
選択式,および探索条件に指定する列ごとに,変数DECOMPRESS_WORK_SIZEを求めてください。そして,求めた値を合計してください。
- grp_col_num
-
GROUP BY句に指定した列の数
- Σ(↑grp_col_size÷8↑×8)
-
GROUP BY句に指定した列ごとに(↑grp_col_size÷8↑×8)を算出し,それぞれ算出した値を合計してください。
- grp_col_size
-
GROUP BY句に指定した各列のデータ長
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
- GROUPING_IN_SGMT_WORK_SIZE
-
セグメント内のグループ化作業領域
次に示す計算式から求めてください。なお,GROUP BY句を指定していない場合は0を代入してください。
計算式(単位:バイト)
- grp_col_num
-
GROUP BY句に指定した列の数
- set_func_num
-
集合関数の数
- grouping_col_data_size(i)
-
各列のデータ長
データ長については,次に示す表から求めてください。
表6‒8 grouping_col_data_sizeに代入する値 項番
分類
データ型
データ長(単位:バイト)
1
数データ
INTEGER
8
2
BIGINT
3
SMALLINT
4
DECIMAL
NUMERIC
1≦精度≦4
8
5
5≦精度≦8
6
9≦精度≦16
7
17≦精度≦38
16
8
DOUBLE PRECISION
8
9
FLOAT
10
文字データ
CHAR
定義長+7
11
VARCHAR
1≦定義長≦32,000
定義長+9
12
32,001≦定義長≦64,000
定義長+11
13
日時データ
DATE
8
14
TIME(p)
3+↑p÷2↑+7
15
TIMESTAMP(p)
7+↑p÷2↑+7
16
バイナリデータ
BINARY
定義長+7
17
VARBINARY
定義長+9
- (凡例)
-
p:小数秒の桁数(0,3,6,9または12。省略した場合は0を仮定)
- grouping_set_func_size(i)
-
各集合関数の結果のデータ長
集合関数の結果のデータ長は,集合関数の結果のデータ型を基に「表6‒8 grouping_col_data_sizeに代入する値」を参照して求めてください。
- Σ(unnest_col_size)
-
集まり導出表に指定する列指定ごとに変数unnest_col_sizeを算出し,それぞれ算出した値を合計してください。
- unnest_col_size
-
集まり導出表に指定する各列指定の列のデータ長
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
- DECOMPRESS_WORK_SIZE
-
伸長作業領域
次に示す計算式から求めてください。
計算式(単位:バイト)
- col_data_size(i)
-
各列のデータ長
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
- page_size
-
表を格納するDBエリアのページサイズ(単位:バイト)
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」にある「表6‒3 DBエリアのページサイズ」を参照してください。
- TXT_WORK_SIZE
-
テキストインデクスの作業領域
次の計算式から求めてください。なお,テキストインデクスを定義していない場合,またはテキストインデクスを使用しない場合は0を代入してください。
計算式(単位:バイト)
- AUDITREAD_WORK_SIZE
-
ADB_AUDITREAD関数の検索作業領域(単位:バイト)
次に示す計算式から求めてください。ただし,ADB_AUDITREAD関数を使用しない場合は0を代入してください。
AUDITREAD_WORK_SIZE=(AUDREADSZ+AUDBLOCKSZ)×1,024
- AUDREADSZ
-
監査証跡ファイルの管理領域
次に示す値を代入してください。ただし,ADB_AUDITREAD関数を使用しない場合は0を代入してください。
値(単位:キロバイト)
AUDREADSZ=1
- AUDBLOCKSZ
-
監査証跡ファイルの作業領域
次に示す値を代入してください。ただし,ADB_AUDITREAD関数を使用しない場合は0を代入してください。
値(単位:キロバイト)
AUDBLOCKSZ=262,144
- SCAN_INFO_SIZE:表検索用管理領域(単位:バイト)
-
-
検索する表ごとに変数SCAN_INFO_DATA_SIZEを算出し,それぞれ算出した値を合計してください。
-
ハッシュジョインから導出される結果が,ネストループジョインの最も外側の表に対応する場合,そのハッシュジョインごとに変数SCAN_INFO_HASH_SIZEを算出してください。また,副問合せのハッシュ実行から導出される結果が,ネストループジョインの最も外側に対応する場合,その副問合せのハッシュ実行ごとに変数SCAN_INFO_HASH_SIZEを算出してください。それぞれ算出した値を合計してください。
-
- SCAN_INFO_DATA_SIZE:実表および結合表検索時の表検索用管理領域(単位:バイト)
-
SCAN_INFO_DATA_SIZE = tbl_access_num × (TBL_ACCESS_INFO_SIZE + OUTERJOIN_INFO_SIZE)
- tbl_access_num:表の検索回数
-
次の条件のうち該当する値を代入してください。
-
結合していない表の場合:1
-
ネストループジョインで結合している表の場合
・ネストループジョインの最も外側の表の場合:1
・ネストループジョインの内表の場合:その内表に対応する外表の行数
-
ハッシュジョインで結合している表の場合
・ハッシュジョインの外表の場合:1
・ハッシュジョインの内表の場合:1
なお,表が外への参照列を含む副問合せの中に指定されていて,かつその副問合せの処理方式がネストループ作業表実行またはネストループ行値実行の場合,上記の値に「uthd_num×sql_rthd_num」を掛けた値を表の検索回数としてください。
- uthd_num
-
サーバ定義のadb_sys_uthd_numオペランドの指定値
- sql_rthd_num
-
サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値
<表の検索回数の計算例>
SELECT * FROM "T1" A,"T2" B,"T3" C WHERE A."C1"=B."C1" AND B."C2"=C."C2"
上記のSELECT文を実行する際,表T1,T2,T3をこの順番で外側からネストループジョインする場合,表の検索回数は次のようになります。
-
表T1の検索回数:1
-
表T2の検索回数:表T1を検索して得られる結果の行数
-
表T3の検索回数:表T1,表T2を検索して得られる結果の行数
-
- TBL_ACCESS_INFO_SIZE:表検索情報領域
-
次の条件のうち該当する値を代入してください。
-
検索対象の表の検索方式がテーブルスキャンの場合:TBL_SCI_MEM
-
検索対象の表の検索方式がB-treeインデクスを使用したインデクススキャンまたはキースキャンの場合:IDX_SCI_MEM
-
検索対象の表の検索方式がテキストインデクスを使用したインデクススキャンの場合:IDX_SCI_TXT_MEM
-
検索対象の表の検索方式が作業表の検索の場合:WRKTBL_SCI_MEM
-
- TBL_SCI_MEM:テーブルスキャン時の表検索情報領域(単位:バイト)
-
TBL_SCI_MEM = (336+RESULT_WORK_SIZE) × (dbarea_file_num+chunk_num+SGTBL-2)
- dbarea_file_num
-
検索対象表が格納されているDBエリアのDBエリアファイル数
- chunk_num
-
検索対象表のチャンク数(検索対象表がシングルチャンク表の場合は1)
- SGTBL
-
検索対象表のセグメント数
SGTBLを求める計算式については,「5.8.1 データ用DBエリアの総ページ数の求め方」の「(2) 変数の説明」にある次の個所を参照してください。なお,検索対象表の種類によって参照先が異なります。
-
シングルチャンク表かつローストア表の場合
-
シングルチャンク表かつカラムストア表の場合
-
マルチチャンク表かつローストア表の場合
-
マルチチャンク表かつカラムストア表の場合
-
- IDX_SCI_MEM:B-treeインデクスを使用した検索時の表検索情報領域(単位:バイト)
-
IDX_SCI_MEM=IDX_CHUNK_SCI_MEM + IDX_SCAN_IDX_MEM
- IDX_CHUNK_SCI_MEM
-
B-treeインデクスを使用した検索時のチャンクに関する表検索情報領域(単位:バイト)
IDX_CHUNK_SCI_MEM=368+RESULT_WORK_SIZE
ただし,次に示すどちらかの条件を満たす場合は,IDX_CHUNK_SCI_MEM=0になります。
-
検索対象表が,チャンクが1個のマルチチャンク表の場合
-
検索対象表がシングルチャンク表の場合
-
- IDX_SCAN_IDX_MEM
-
B-treeインデクスを使用した検索時の全チャンクの表検索情報領域(単位:バイト)
ただし,検索対象のチャンク数が0個の場合は,IDX_SCAN_IDX_MEM=0になります。
- chunk_num
-
検索対象となるチャンク数
- IDX_SCAN_IDX_MEM(s)
-
s番目のチャンクのB-treeインデクスに関する表検索情報領域(単位:バイト)
- r
-
サーチ条件を満たす行のキー値が2種類以上の場合は2,1種類の場合は0になります。
- n
-
PIDX(k)=1となる最小のkになります。
- PIDX(k)
-
「5.8.3 B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2) 上位ページ用のセグメントで使用する格納ページ数(変数IP_UPPER(i))の求め方」の計算式1(PIDX(k)の求め方)に従って求めてください。
なお,PIDX(k)を求める計算式に使用されている変数key_num,dup_key_num,およびkey_dupについては,サーチ条件を満たすキーについて,キーの種類の個数やキーの重複数の平均値を求めてください。キーの種類やキーの重複数を計算する際,DELETE文による行の削除や,UPDATE文による行の更新によって無効となった行データも含めて計算してください。また,INSERT文による行の追加,またはUPDATE文による行の変更を繰り返した場合や,キーの重複数やキー長にばらつきがある場合は,求めた値を1.2~1.5倍した値を用いてください。
- PDUP
-
「5.8.3 B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1) 下位ページ用のセグメントで使用する格納ページ数(変数IP_LOWER(i))の求め方」の計算式2(PDUPの求め方)に従って求めてください。
なお,PDUPを求める計算式に使用されている変数dup_key_numとdup_key_dupについては,サーチ条件を満たすキーについて,キーの種類の個数やキーの重複数の平均値を求めてください。キーの種類やキーの重複数を計算する際,DELETE文による行の削除や,UPDATE文による行の更新によって無効となった行データも含めて計算してください。また,INSERT文による行の追加,またはUPDATE文による行の変更を繰り返した場合や,キーの重複数やキー長にばらつきがある場合は,求めた値を1.2~1.5倍した値を用いてください。
- PIDX_MEM
-
B-treeインデクスの上位またはリーフページに関する表検索情報領域(単位:バイト)
- idx_col_num
-
B-treeインデクスのインデクス構成列数
- key_size(i)
-
i番目のインデクス構成列のキー長
「5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を参照して,key_size(i)を計算してください。
なお,「表5‒19 B-treeインデクスのキー長一覧」中の「実際のデータ長」は,「データの定義長」と読み替えて計算してください。
- PDUP_MEM
-
B-treeインデクスのローIDディレクトリページ,またはローIDリストページに関する表検索情報領域(単位:バイト)
- idx_col_num
-
B-treeインデクスのインデクス構成列数
- key_size(i)
-
i番目のインデクス構成列のキー長
「5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を参照して,key_size(i)を計算してください。
なお,「表5‒19 B-treeインデクスのキー長一覧」中の「実際のデータ長」は,「データの定義長」と読み替えて計算してください。
- IDX_SCI_TXT_MEM
-
テキストインデクスを使用した検索時の表検索情報領域(単位:バイト)
IDX_SCI_TXT_MEM = IDX_CHUNK_TXT_MEM + IDX_SCAN_TXT_MEM
- IDX_CHUNK_TXT_MEM
-
テキストインデクスを使用した検索時のチャンクに関する表検索情報領域(単位:バイト)
ただし,次に示すどちらかの条件を満たす場合は,IDX_CHUNK_TXT_MEM=0になります。
-
検索対象表が,チャンクが1個のマルチチャンク表の場合
-
検索対象表がシングルチャンク表の場合
-
- scan_str_num
-
テキストインデクスを使用するLIKE述語,LIKE_REGEX述語,スカラ関数CONTAINSに指定した検索文字列の文字数の合計(1,001を超える場合は1,001とする)
- TXT_SCAN_NODE_NUM
-
テキストインデクス内部の検索に使用するノード数
TXT_SCAN_NODE_NUM = scan_nest_num + sortcode_str_num + TXT_SYNONYM_NUM
- scan_nest_num
-
テキストインデクスを使用するLIKE述語,LIKE_REGEX述語,スカラ関数CONTAINSのOR条件のネスト数
- sortcode_str_num
-
スカラ関数CONTAINSで表記ゆれ補正検索を行う場合の検索文字列の文字数
- TXT_SYNONYM_NUM
-
スカラ関数CONTAINSで同義語検索を使用する場合の同義語グループの同義語数の平均値
- all_synonym_num
-
スカラ関数CONTAINSで同義語検索を行う場合に指定した同義語辞書に登録されている同義語数
すべての同義語グループの同義語の合計数です。同義語検索を行わない場合は,0になります。
- synonym_group_num
-
スカラ関数CONTAINSで同義語検索を行う場合に指定した同義語辞書に登録されている同義語グループ数
- IDX_SCAN_TXT_MEM
-
テキストインデクスを使用した検索時の全チャンクの表検索情報領域(単位:バイト)
ただし,検索対象のチャンク数が0個の場合は,IDX_SCAN_TXT_MEM=0になります。
- chunk_num
-
検索対象のチャンク数
- IDX_SCAN_TXT_MEM(s)
-
s番目のチャンクのテキストインデクスに関する表検索情報領域(単位:バイト)
- WRKTBL_SCI_MEM
-
作業表検索時の表検索情報領域(単位:バイト)
WRKTBL_SCI_MEM = (304+RESULT_WORK_SIZE) × WRKTBL_PGNUM
- WRKTBL_PGNUM
-
検索対象の作業表のページ数
「5.9.2 作業表を格納するために必要な基本行用ページ数の求め方」を参照して,WP(i)を計算してください。
- SCAN_INFO_HASH_SIZE
-
ハッシュテーブルを使用した検索時の表検索用管理領域(単位:バイト)
- hashtbl_row_len
-
ハッシュテーブル行長
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照して,ハッシュテーブル行長を計算してください。
- hashtbl_row_num
-
ハッシュジョインまたは副問合せのハッシュ実行から導出される結果行数
わからない場合は,1,044,480としてください。
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値)
- OUTERJOIN_INFO_SIZE
-
外結合管理領域(単位:バイト)
OUTERJOIN_INFO_SIZE = 120+16×sql_rthd_num + RESULT_WORK_SIZE
ただし,次の条件をすべてを満たす場合は,OUTERJOIN_INFO_SIZE=0になります。
-
検索対象の表が外結合の左側に指定されていない場合
-
検索対象の表が外結合の右側に指定されていない場合
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値)
-
- SORTGRP_PROC_SIZE
-
SQL処理リアルスレッド用のソートグループ化の作業領域
次のどちらかの集合関数をSQL文中に指定する場合に求めてください。どちらの指定もない場合は,0を代入してください。
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
LAG関数
-
LEAD関数
計算式(単位:バイト)
SORTGRP_PROC_SIZE= 352×Σ(sortgrp_cor_query_wrk_num)×uthd_num +LISTAGG_PROC_SIZE+ARRAY_AGG_PROC_SIZE+LAG_LEAD_PROC_SIZE
-
- Σ(sortgrp_cor_query_wrk_num)
-
外への参照列を含む副問合せ中に含まれるLISTAGG集合関数,またはARRAY_AGG集合関数を指定した問合せ指定ごとに,変数sortgrp_cor_query_wrk_numを求めてください。そして,それぞれ求めた値を合計してください。
- sortgrp_cor_query_wrk_num
-
外への参照列を含む副問合せ中に含まれるソートグループ化の作業領域の個数
次の数を合計したものを代入してください。
-
ALL(省略値)を指定したLISTAGG集合関数の指定数
-
DISTINCTを指定したLISTAGG集合関数の指定数×2
-
ARRAY_AGG集合関数の指定数
-
DISTINCT集合関数の指定数
-
逆分布関数の指定数
-
LAG関数の指定数
-
LEAD関数の指定数
-
- uthd_num
-
1リアルスレッドで生成できる擬似スレッド数(サーバ定義adb_sys_uthd_numオペランドの指定値)
- LISTAGG_PROC_SIZE
-
SQL処理リアルスレッド用のLISTAGG集合関数の作業領域
SQL文中に,LISTAGG集合関数を含む場合に求めてください。LISTAGG集合関数を含まない場合は,0になります。
計算式(単位:バイト)
LISTAGG_PROC_SIZE=128×listagg_cor_query_num×uthd_num
- listagg_cor_query_num
-
外への参照列を含む副問合せ中に指定されているLISTAGG集合関数の数
- uthd_num
-
1リアルスレッドで生成できる擬似スレッド数(サーバ定義adb_sys_uthd_numオペランドの指定値)
- ARRAY_AGG_PROC_SIZE
-
SQL処理リアルスレッド用のARRAY_AGG集合関数の作業領域
ARRAY_AGG集合関数をSQL文中に指定する場合に求めてください。ARRAY_AGG集合関数を指定しない場合は,0を代入してください。
計算式(単位:バイト)
ARRAY_AGG_PROC_SIZE= Σ{array_agg_cor_query_num×((array_agg_cor_query_num+1)×104+RESULT_WORK_SIZE) }×uthd_num +Σ(array_agg_not_cor_query_num)×RESULT_WORK_SIZE
- Σ{array_agg_cor_query_num×((array_agg_cor_query_num+1)×104+RESULT_WORK_SIZE)}
-
外への参照列を含む副問合せ中の,ARRAY_AGG集合関数を指定した問合せ指定ごとに,次の値を求めてください。そして,それぞれ求めた値を合計してください。
array_agg_cor_query_num×((array_agg_cor_query_num+1)×104+RESULT_WORK_SIZE)
- array_agg_cor_query_num
-
外への参照列を含む副問合せ中の問合せ指定に指定されているARRAY_AGG集合関数の数
- uthd_num
-
1リアルスレッドで生成できる擬似スレッド数(サーバ定義adb_sys_uthd_numオペランドの指定値)
- Σ(array_agg_not_cor_query_num)
-
外への参照列を含む副問合せ中には指定されていない問合せ指定ごとに,変数array_agg_not_cor_query_numを求めてください。そして,それぞれ求めた値を合計してください。
- array_agg_not_cor_query_num
-
外への参照列を含む副問合せ中には指定されていない問合せ指定に指定されているARRAY_AGG集合関数の数
- RT_AGGR_PROC_WORK_SIZE
-
SQL処理リアルスレッド用のリアルスレッド単位の集計作業領域
SQL文中に,次に示すどれかの要素を含む場合に求めてください。含まない場合は,0を代入してください。
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
逆分布関数
-
ウィンドウ関数
データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
計算式(単位:バイト)
RT_AGGR_PROC_WORK_SIZE= (64×RESULT_WORK_SIZE×sql_rthd_num)×rt_aggr_num
-
- sql_rthd_num
-
最大SQL処理リアルスレッド数
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。
- rt_aggr_num
-
該当する要素の数
- LAG_LEAD_PROC_SIZE
-
SQL処理リアルスレッド用のLAG関数およびLEAD関数の作業領域
SQL文中にLAG関数またはLEAD関数を指定する場合に求めてください。指定しない場合は,0を代入してください。
計算式(単位:バイト)
LAG_LEAD_PROC_SIZE=(400×lag_cor_query_num+352×lead_cor_query_num)×uthd_num
- lag_cor_query_num
-
外への参照列を含む副問合せ中に指定するLAG関数の数
- lead_cor_query_num
-
外への参照列を含む副問合せ中に指定するLEAD関数の数
- uthd_num
-
サーバ定義adb_sys_uthd_numオペランドの指定値
- PRL_PROC_SIZE
-
SQLパラレル実行機能のリアルスレッド管理領域
SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は,0を代入してください。
値(単位:バイト)
PRL_PROC_SIZE=512+PRL_HASH_PROC_SIZE
- PRL_HASH_PROC_SIZE
-
ノード間共有するハッシュテーブルのリアルスレッド管理領域
SQLパラレル実行機能が適用され,かつSQL文中にGROUP BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合,またはGROUP BY句を含まない場合は,0を代入してください。また,最大SQL処理リアルスレッド数,またはハッシュテーブル領域サイズが0の場合も,0を代入してください。
計算式(単位:バイト)
PRL_HASH_PROC_SIZE= 4,175+8×hashtbl_num+(8,512+(13,632+MAX(131,072 ,hashtbl_row_len)×80) ×node_num)×prl_hashtbl_num
- hashtbl_num
-
ハッシュテーブル数
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- hashtbl_row_len
-
ハッシュテーブル行長
「6.25.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。
- node_num
-
マルチノード構成のノード数
- prl_hashtbl_num
-
GROUP BY句の数
- SQL_PRL_COMM_SIZE
-
操作系SQLの通信管理領域
次の値を代入してください。
値(単位:バイト)
-
SQLパラレル実行機能が適用される場合
SQL_PRL_COMM_SIZE=8,256
-
SQLパラレル実行機能が適用されない場合
SQL_PRL_COMM_SIZE=0
-
- BUF_DLYSZ
-
更新ページの通知領域
次の値を代入してください。
値(単位:キロバイト)
- ARC_DIR_PATH
-
削除対象のアーカイブディレクトリのパス名を管理する領域
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- archivedir_path_num
-
TRUNCATE TABLE文を実行する場合は,1を代入してください。
PURGE CHUNK文を実行する場合は,削除対象のチャンク数を代入してください。
- RNGIDX_INFO_SIZE
-
チャンクのレンジインデクス情報領域
次に示す計算式から求めてください。
計算式(単位:バイト)
- rngidx_num
-
SQL文の実行時に,チャンクのスキップに使用されるレンジインデクスのうち,B-treeインデクスを使用して検索する表の検索に使用されるレンジインデクスの合計数
同じレンジインデクスでSQL文が複数回実行される場合は1として合計数を求めてください。合計数が0の場合,RNGIDX_INFO_SIZEは0としてください。
なお,この値はアクセスパス情報の表示結果から,次の手順で求めることができます。
-
アクセスパス情報の表示結果の詳細表示の,表の検索方式に関する情報とインデクスに関する情報を確認してください。次のどちらかの条件に該当するものをすべて探してください。
-
表の検索方式がINDEX SCANであり,インデクスに関する情報の1つ目のインデクス情報のINDEX TYPEがB-TREE(B-treeインデクス)である
-
表の検索方式がKEY SCANである
-
-
手順1.の条件に該当し,かつインデクスに関する情報が次の両方の条件に該当するものをすべて探してください。
-
INDEX TYPEがRANGE(レンジインデクス)である
-
SKIP CONDがCHUNKである
-
-
手順2.に該当するインデクスに関する情報にあるINDEX NAMEのうち,同じ名前のものは重複排除して合計数を求めてください。求めた値がrngidx_numとなります。
次に示すアクセスパス情報の表示結果の例の場合,INDEX NAMEは,「T1RIX1」(2つ)と,「T2RIX1」(1つ)の2種類です。そのため,rngidx_numは2となります。
アクセスパスについては,マニュアルHADB AP開発ガイドのアクセスパスの見方(SQL文の実行計画の見方)を参照してください。
-
- chunk_num(i)
-
i番目のレンジインデクスが定義されている表に作成されたチャンク数
アーカイブチャンクの数は除いてください。シングルチャンク表の場合は1となります。
- RNGIDX_INFO_ENTRY_SIZE(i)
-
レンジインデクス情報エントリ長
次に示す計算式から求めてください。
計算式(単位:バイト)
- col_size(i)
-
レンジインデクスを定義した列のデータ長(単位:バイト)
各列のデータ長は,「表6‒9 各データ型のデータ長の一覧」を参照してください。
データ長については,次に示す表から求めてください。
項番 |
分類 |
データ型 |
データ長(単位:バイト) |
|
---|---|---|---|---|
1 |
数データ |
INTEGER |
8 |
|
2 |
BIGINT |
|||
3 |
SMALLINT |
4 |
||
4 |
DECIMAL NUMERIC |
1≦精度≦4 |
2 |
|
5 |
5≦精度≦8 |
4 |
||
6 |
9≦精度≦16 |
8 |
||
7 |
17≦精度≦38 |
16 |
||
8 |
DOUBLE PRECISION |
8 |
||
9 |
FLOAT |
|||
10 |
文字データ |
CHAR |
定義長 |
|
11 |
VARCHAR |
1≦定義長≦32,000 |
定義長+2 |
|
12 |
32,001≦定義長≦64,000 |
定義長+4 |
||
13 |
日時データ |
DATE |
4 |
|
14 |
TIME(p) |
3+↑p÷2↑ |
||
15 |
TIMESTAMP(p) |
7+↑p÷2↑ |
||
16 |
バイナリデータ |
BINARY |
定義長 |
|
17 |
VARBINARY |
定義長+2 |
||
18 |
配列データ |
ARRAY |
(要素データ型のデータ長×n)+2 |
- (凡例)
-
p:小数秒の桁数(0,3,6,9または12。省略した場合は0を仮定)
n:配列データの最大要素数(2~30,000の整数)
- 注
-
CURRENT_USERはデータ型VARCHAR,定義長100として計算してください。
(d) 変数RTHD_ROLLBKSZの求め方
変数RTHD_ROLLBKSZは,ロールバック処理時,またはHADBサーバの再開始時に加算します。次に示す値を代入してください。
- 値(単位:キロバイト)
-
RTHD_ROLLBKSZ= 67
(e) 変数RTHD_DBEXTSZの求め方
変数RTHD_DBEXTSZは,DBエリア拡張時に加算します。次に示す値を代入してください。
- 値(単位:キロバイト)
-
RTHD_DBEXTSZ= 32,768
(f) 変数RTHD_WORKBUFの求め方
変数RTHD_WORKBUFは,作業表使用時に加算します。次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
RTHD_WORKBUF= ↑(clt_wrk_page_num×(wrk_page_size+304)+8 ×(clt_wrk_page_num+WIO_NUM)+wrk_page_size)÷1,024↑×1.05
- 変数の説明
-
-
clt_wrk_page_num
クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値(ただし,adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値)
-
wrk_page_size
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」の「表6‒3 DBエリアのページサイズ」の作業表用DBエリアのページサイズを参照して,バイト単位で求めてください。
-
WIO_NUM
クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値(ただし,adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値)と変数UTHNUMのうち,小さい方の値を代入してください。変数UTHNUMについては,「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(a) 変数SCIの求め方」を参照してください。
-
(g) 変数RTHD_EXESQLDICSZの求め方
変数RTHD_EXESQLDICSZは,操作系SQLの前処理時に加算します。次に示す計算式から求めてください。
なお,対象表がビュー表の場合は,計算式で求めた値に39キロバイトを加算してください。
- 計算式(単位:キロバイト)
-
変数の説明
- LIKE_REG_PRD_SIZE
-
LIKE_REGEX述語の実行管理領域(単位:バイト)
次に示す計算式から求めてください。
なお,LIKE_REGEX述語を指定していない場合は,変数LIKE_REG_PRD_SIZEに0を代入してください。
- scan_str_num
-
パターン文字列に指定した文字列の文字数
- normal_factor_size
-
パターン文字列に指定された正規表現内の正規因子の数
- paren_nest_num
-
パターン文字列に指定された正規表現内の丸括弧のネスト数
- vertical_line_num
-
パターン文字列に指定された正規表現内の垂直棒の数
- quantifier_nest_num
-
パターン文字列に指定された正規表現内の量指定子のネストの数
- repetition_factor_sum
-
パターン文字列に指定された正規表現内の繰り返し因子に指定された上限値の合計値
繰り返し因子に指定された上限値が存在しない場合は,繰り返し因子に指定された下限値の値を代入してください。
- 正規表現の記述例
-
((a{2}){5}){8,10}
計算式(単位:個数)
正規表現の記述例と,変数LIKE_REG_PRD_SIZEの計算式の例を,次に示します。
- 正規表現の記述例1
-
KFAA11[0-9]{3}-E
計算式の例(単位:バイト)
- 正規表現の記述例2
-
KFAA6000[2-9]-E.*uid=12345.*
計算式の例(単位:バイト)
- BYTE_CODE_SIZE
-
LIKE_REGEX述語の実行管理領域内のパターン文字列に指定された正規表現を評価用に変換したバイトコードを格納する領域(単位:バイト)
次に示す計算式から求めてください。
- char_specifier_num
-
パターン文字列に指定された正規表現内の文字指定子の数の合計値
文字指定子に繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「(a{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数char_specifier_numに加算してください。
繰り返し因子に指定された繰り返しの数については,「(c) 変数RTHD_EXESQLSZの求め方」の「表6‒7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。
- quantifier_num
-
パターン文字列に指定された正規表現内の繰り返し因子を除く量指定子の数
- char_class_num
-
パターン文字列に指定された正規表現内の文字クラスの数の合計値
文字クラスに繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「(\d{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数char_class_numに加算してください。
繰り返し因子に指定された繰り返しの数については,「(c) 変数RTHD_EXESQLSZの求め方」の「表6‒7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。
- normal_char_set_num
-
パターン文字列に指定された正規表現内の正規文字集合識別子指定の数の合計値
正規文字集合識別子指定に繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「([[:alpha:]]{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数normal_char_set_numに加算してください。
繰り返し因子に指定された繰り返しの数については,「(c) 変数RTHD_EXESQLSZの求め方」の「表6‒7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。
- メモ
-
「([[:alpha:]]{10}){10}」の場合は,正規文字集合も繰り返しているため,変数char_list_numにも100を加算する必要があります。
- char_list_num
-
パターン文字列に指定された正規表現内の正規文字集合の数の合計値
正規文字集合に繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「([abc]{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数char_list_numに加算してください。
繰り返し因子に指定された繰り返しの数については,「(c) 変数RTHD_EXESQLSZの求め方」の「表6‒7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。
- repetition_factor_sum
-
パターン文字列に指定された正規表現内の繰り返し因子に指定された上限値の合計値
繰り返し因子に指定された上限値が存在しない場合は,繰り返し因子に指定された下限値の値を代入してください。
- 正規表現の記述例
-
((a{2}){5}){8,10}
計算式(単位:個数)
正規表現の記述例と,変数BYTE_CODE_SIZEの計算式の例を,次に示します。
- 正規表現の記述例1
-
KFAA11[0-9]{3}-E
計算式の例(単位:バイト)
- 正規表現の記述例2
-
KFAA6000[2-9]-E.*uid=12345.*
計算式の例(単位:バイト)
- CONTAINS_PRD_SIZE
-
スカラ関数CONTAINSの実行管理領域(単位:バイト)
次に示す計算式から求めてください。
なお,スカラ関数CONTAINSを指定していない場合は,変数CONTAINS_PRD_SIZEに0を代入してください。
- scan_str_num
-
パターン文字列に指定した文字列の文字数
- SYN_LIST_SIZE
-
同義語の格納領域(単位:バイト)
次に示す計算式から求めてください。
なお,スカラ関数CONTAINSで同義語検索指定を指定していない場合は,変数SYN_LIST_SIZEに0を代入してください。
- syn_str_num
-
同義語の平均文字数
- syn_group_size
-
1同義語グループ中に指定されている同義語数の平均
(h) 変数RTHD_COMMUSZの求め方
変数RTHD_COMMUSZは,通信処理時に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
RTHD_COMMUSZ= RCVBUF+SNDBUF
変数の説明
- RCVBUF:受信バッファ
-
次に示す計算式から求めてください。
- 計算式(単位:キロバイト)
-
RCVBUF= ↑(352+CMSG)÷1,024↑
- CMSG:HADBクライアントからの送信データサイズ
-
マニュアルHADB AP開発ガイドのHADBクライアントのメモリ所要量の見積もりのHADBクライアントとHADBサーバの通信時に使用するメモリ所要量にある変数CMSGを参照してください。
- SNDBUF:送信バッファ
-
初期確保時の送信バッファは次に示す値を代入してください。
- 値(単位:キロバイト)
-
SNDBUF= 4
初期確保した送信バッファを超える送信データが作成されると,HADBサーバは次に示す計算式で求められた値を再確保します。
- 計算式(単位:キロバイト)
-
SNDBUF= ↑SMSG÷4,096↑×4
- SMSG:HADBサーバの送信データサイズ
-
送信データサイズは処理の内容によって異なります。各処理で確保される送信データサイズを次の表に示します。
表6‒10 各処理で確保される送信データサイズの一覧 項番
処理内容
送信データサイズの計算式(単位:バイト)
1
SQL文を実行した場合
2
SQL文の実行がNOROWの場合
3
FETCHの場合
4
FETCHがNOROWの場合(一括転送で1行以上FETCHできた場合)
5
SQL文の前処理をした場合
6
adbdbstatusコマンドを実行した場合
(凡例)
- srv_base_info:送信データの基本情報
-
152バイトを代入してください。
- srv_execute:実行固有情報
-
24バイトを代入してください。
- srv_fetch:FETCH固有情報
-
16バイトを代入してください。
- srv_norow:NOROW固有情報
-
520バイトを代入してください。
- srv_prepare:前処理固有情報
-
56バイトを代入してください。
- srv_status_info:データベース状態解析固有情報
-
1,048,576バイトを代入してください。
- ARRAY_RESULT:一括更新結果
-
次に示す計算式から求めてください。
計算式(単位:バイト)
ARRAY_RESULT= (array_num−1)×8
- array_num:一括更新した?パラメタの組の数
-
APの実装方法によって異なります。
-
CLI関数を使用したAPの場合
a_rdb_SQLBindArrayParams()の引数ArrayCountに指定した数になります。a_rdb_SQLBindParams()を使用してパラメタ結合した場合は,1で固定されます。
-
JDBCドライバを使用したAPの場合
addBatchメソッドで登録したパラメタリストの数になります。executeBatchメソッドまたはexecuteLargeBatchメソッドを使用しない場合は,1で固定されます。
-
- FETCH_DATA:一括転送行データ
-
次に示す計算式から求めてください。
計算式(単位:バイト)
- col_num
-
SQL文に指定した選択式の数
- col_size(i)
-
各選択式のデータ長
- fetch_size:FETCH処理時の一括送信行数
-
クライアント定義adb_clt_fetch_sizeオペランドの指定値を代入してください。クライアント定義adb_clt_fetch_sizeオペランドについては,マニュアルHADB AP開発ガイドの性能に関するオペランドを参照してください。
- PREPARE_INFO_SIZE:SQL文の前処理情報
-
「(c) 変数RTHD_EXESQLSZの求め方」の変数PREPARE_INFO_SIZEを参照してください。
- APATHVIEW:アクセスパスを表示する際に作成されるアクセスパス情報管理領域
-
「(1) プロセス共通メモリの所要量の求め方(通常運用時)」の「(b) 変数PROC_TOTALSQLSSZの求め方」にある変数APATHVIEWを参照してください。
(i) 変数RTHD_EXPSQLTRCSZの求め方
変数RTHD_EXPSQLTRCSZは,SQLトレースバッファの拡張時に加算します(変数RTHD_EXPSQLTRCSZの値が32,768キロバイトを超えると,SQLトレースバッファが拡張されます)。次に示す計算式から求めてください。
計算式(単位:キロバイト)
変数の説明
- PARAM_INFO_SIZE
-
「(c) 変数RTHD_EXESQLSZの求め方」の変数PARAM_INFO_SIZEを参照してください。
- array_num
-
一括更新する際に指定した?パラメタセットの数
(j) 変数RTHD_AUDINFSZの求め方
変数RTHD_AUDINFSZは,監査証跡機能が有効な場合に加算します。次に示す値を代入してください。
- 値(単位:キロバイト)
-
RTHD_AUDINFSZ= 3
(k) 変数RTHD_COLUMNIZESZの求め方
変数RTHD_COLUMNIZESZは,更新行のカラム化機能が有効な場合に加算します。次に示す計算式から求めてください。
計算式(単位:キロバイト)
変数の説明
- TABLELIST:表名リスト情報
-
次に示す値を代入してください。
値(単位:キロバイト)
TABLELIST= 833
- table_num:更新行のカラム化機能の対象となるカラムストア表の総数
-
更新行のカラム化機能の対象となるカラムストア表については,「11.19.2 準備作業」の「(1) 機能の適用対象となるカラムストア表を確認する」を参照してください。
- TABLEINFO(i):更新行のカラム化機能の対象となるi番目のカラムストア表の情報
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
- column_num
-
更新行のカラム化機能の対象となるi番目のカラムストア表の列数
- index_num
-
更新行のカラム化機能の対象となるi番目のカラムストア表に定義されたレンジインデクス数
- chunk_num
-
更新行のカラム化機能の対象となるi番目のカラムストア表のチャンク数
シングルチャンク表の場合は1としてください。
- SEGMENTLIST(k):k番目のチャンクのセグメントリスト情報
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
SEGMENTLIST(k)=↑24×segment_num÷1,024↑
- segment_num
-
k番目のチャンクのローデータ用セグメント数
「5.8.1 データ用DBエリアの総ページ数の求め方」の「(2) 変数の説明」にある次の変数を参照して求めてください。
■マルチチャンク表の場合
「(g) 変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方(マルチチャンク表の場合)」の変数ROWDATASEGNUM(i,k)
■シングルチャンク表の場合
「(b) 変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方(シングルチャンク表の場合)」の変数ROWDATASEGNUM(i)
- RELOCATE_DAT(i):更新行のカラム化機能の対象となるi番目のカラムストア表の再配置用作業領域
-
次に示す計算式から求めてください。
計算式(単位:キロバイト)
RELOCATE_DAT(i)= ↑(max_rowsz×2+1,768+16×col_num +↓(96+216※+544+(652+page_size)×col_num +(80+page_size)×SEGSIZE+7)÷8↓×8 +432+128×col_num +↓(2×col_num+7)÷8↓×8 +(1,736+16×col_num)×col_num+max_rowsz )÷1,024↑ +16,384+1,024×col_num
- 注※
-
更新行のカラム化機能の対象となるi番目のカラムストア表にレンジインデクスが定義されているときに加算してください。
- max_rowsz
-
最大行長(単位:バイト)
最大行長については,「5.8.2 行の種別ごとの格納ページ数の求め方」の「(1) 基本行用ページ数(変数BP(i))の求め方」の行長ROWSZの計算式を基に求めてください。
- page_size
-
更新行のカラム化機能の対象となるi番目のカラムストア表が格納されているデータ用DBエリアのページサイズ(単位:バイト)
「6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」にある「表6‒3 DBエリアのページサイズ」を参照して求めてください。
- col_num
-
更新行のカラム化機能の対象となるi番目のカラムストア表の列数
- SEGSIZE
-
更新行のカラム化機能の対象となるi番目のカラムストア表が格納されているデータ用DBエリアのセグメントサイズ(単位:ページ数)
次に示す計算式から求めてください。
SEGSIZE= 1セグメントの容量(単位:バイト)÷page_size
- RTHD_DATACOMPRESS(i):更新行のカラム化機能の対象となるi番目のカラムストア表のデータ圧縮用作業領域
-
「6.3.6 adbimportコマンド実行時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(adbimportコマンド実行時)」の「(d) 変数RTHD_DATALOADの求め方」の変数RTHD_DATACOMPRESSを参照して求めてください。
(3) ヒープメモリの所要量の求め方(通常運用時)
通常運用時のヒープメモリ(HEAP_EXECSZ)の所要量は,次に示す計算式から求めてください。
計算式(単位:キロバイト)
HEAP_EXECSZ= max_sql( UTHD_WORKSZ )×rthd_num |
変数の説明
- rthd_num
-
サーバ定義adb_sys_rthd_numオペランドの指定値
- max_sql( )
-
実行する各SQL文について,括弧内の変数の計算結果を求めてください。その中で最も大きい値を代入してください。
- UTHD_WORKSZ:擬似スレッド用作業領域
-
次に示す計算式から求めてください。なお,次の条件に該当する場合は,0を代入してください。
-
実行するSQL文がSELECT文でない
計算式(単位:キロバイト)
UTHD_WORKSZ= ↑QE×uthd_num÷2↑
- uthd_num
-
サーバ定義adb_sys_uthd_numオペランドの指定値
- QE
-
問合せ式の問合せ式本体に対して,変数QBの規則を適用して求められた値
- QB
-
問合せ式本体に集合演算子を含むかどうかによって,求め方が異なります。
■問合せ式本体に集合演算子を含まない場合
問合せ式本体の問合せ指定に対して,変数QSの規則を適用して求められた値
■問合せ式本体に集合演算子を含む場合
次の計算式から求めてください。
QB= MAX(ST1, ... , STi)+setop_num
- ST1, ... , STi
-
集合演算項の各問合せ指定に対して,変数QSの規則を適用して求められた値
- setop_num
-
問合せ式本体に指定された集合演算の数
- QS
-
問合せ式本体に副問合せを含むかどうかによって,求め方が異なります。
■問合せ指定に副問合せを含まない場合
次の計算式から求めてください。
QS= scan_num+1
■問合せ指定に副問合せを含む場合
次の計算式から求めてください。
QS= MAX(SQ1, ... , SQi)+scan_num+1
- SQ1, ... , SQi
-
問合せ指定に指定された各副問合せに対して,変数QBの規則を適用して求められた値
- scan_num
-
問合せ指定に指定された次の個数を合計した値
-
GROUP BY句
-
SELECT DISTINCT
-
DISTINCT集合関数
-
逆分布関数
-
LISTAGG集合関数
-
ARRAY_AGG集合関数
-
ウィンドウ関数
-
導出表の数
-
結合表の数(FULL OUTER JOINの場合は,1つ当たり3とカウントしてください)
-
結合表でない表参照の数−1
-
アーカイブマルチチャンク表の数×3
-
変数QEの求め方の例を次に示します。
■変数QEの求め方の例
ビュー表または問合せ名を指定した場合の注意事項を次に示します。
- ■ビュー表または問合せ名を指定した場合の注意事項
-
実行するSQL文中にビュー表または問合せ名を指定した場合は,それぞれに対応する内部的な導出表を適用したものとして見積もってください。例を次に示します。
例:ビュー定義
CREATE VIEW "V1" AS SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"
例:実行するSQL文
SELECT * FROM "V1","T3" WHERE "V1"."C1"="T3"."C3"
上記のようなビュー定義と実行するSQL文の場合,見積もり対象となるSQL文は,次のとおりです。
見積もり対象となるSQL文
SELECT * FROM (SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"),"T3" WHERE "V1"."C1"="T3"."C3"
-