Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


6.3.4 通常運用時のメモリ所要量の求め方

HADBサーバ開始後,通常運用時(HADBクライアントがHADBサーバに接続するとき,およびSQL文を実行するとき)に,HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ
  • プロセス共通メモリ(PROC_EXECSZ

  • リアルスレッド固有メモリ(RTHD_EXECSZ

■プロセスメモリ
  • ヒープメモリ(HEAP_EXECSZ

それぞれのメモリ所要量の計算式を次に示します。

〈この項の構成〉

(1) プロセス共通メモリの所要量の求め方(通常運用時)

通常運用時のプロセス共通メモリ(PROC_EXECSZ)の所要量は,次の計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

注※

マルチノード機能を使用する場合に加算してください。

変数の説明

(a) 変数PROC_CNCTSZの求め方

変数PROC_CNCTSZは,データベース接続時に加算します。次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

変数の説明

BUFCNCTコネクションバッファ

次に示す計算式から求めてください。

計算式(単位:キロバイト)
BUFCNCT=
       ↑(56+8,216×rthd_num)×max_users÷1,024↑
rthd_num

次の計算式から求めてください。

サーバ定義adb_sys_rthd_numオペランドの指定値 + 1

ただし,サーバ定義に-vオプション,または-kオプションを指定したadbbuffオペランドがない場合は,変数rthd_num0としてください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

SQLWQUESQL文実行待ちキュー

次に示す計算式から求めてください。

計算式(単位:キロバイト)
SQLWQUE= ↑8×max_users÷1,024↑

max_usersサーバ定義adb_sys_max_usersオペランドの指定値

SQLACTBSQL文テーブルアクセス情報

次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

max_table_num対象のコネクションで実行する各SQL文でアクセスする表数の最大値

RTHDLOG

処理リアルスレッド用ログ管理領域

次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

(b) 変数PROC_TOTALSQLSSZの求め方

変数PROC_TOTALSQLSSZは,SQLの前処理時に加算します。次に示す計算式から求めてください。

計算式(単位:キロバイト)
PROC_TOTALSQLSSZMAXSQLWRKTOTALSQLSCTPREDICSZPROC_AUDINFSZ

変数の説明

MAXSQLWRK

1トランザクション中に,SQLの前処理で使用される作業領域

次に示す計算式から求めてください。

計算式(単位:キロバイト)
MAXSQLWRK= (max_sqlSQLPSZ)+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文の前処理の前処理結果管理領域の合計となります。

次に示す計算式から求めてください。

計算式(単位:キロバイト)
TOTALSQLSCTsum_sqlSQLPSSZSQLSSZAPATHVIEW)×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

ANDORおよび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式のTHENELSEの総数

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型または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の数

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サーバ開始時)」の「(r) 変数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_CTLmax_usersrthd_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サーバ開始時)」の「(e) 変数DBAREAINFの求め方」を参照して,変数DBAREAINFを再度求めてください。

(f) 変数PROC_UPDSZの求め方

変数PROC_UPDSZは,データベース接続後の定義系SQLの初回実行時,および更新系SQLの初回実行時に加算します。次に示す計算式から求めてください。

計算式(単位:キロバイト)
PROC_UPDSZBUFUPD×upd_users

変数の説明

upd_users

更新ページ管理用のプロセス共通メモリを取得するコネクション(APおよびコマンド)の同時実行数

BUFUPD

更新ページ管理用のプロセス共通メモリ

次に示す計算式から求めてください。

計算式(単位:キロバイト)
BUFUPD=
    ↑(56+BUFHISTBUFFLUBUFBLK)÷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+BUFMEMRTHNUM+257)+BUFMEMRTHNUM+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)の所要量は,次の計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

変数の説明

(a) 変数RTHD_CNCTSZの求め方

変数RTHD_CNCTSZは,データベース接続時に加算します。次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

変数の説明

TRANSNAP

(1) プロセス共通メモリの所要量の求め方(通常運用時)」の「(c) 変数PROC_EXECSQLSZの求め方」の変数TRANSNAPを参照してください。

SQLTRC

SQLトレース機能の管理情報

65,536キロバイトを代入してください。

(b) 変数RTHD_DEFSQLSZの求め方

変数RTHD_DEFSQLSZは,定義系SQL実行時に加算します。次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

変数の説明

SZ_ALTER_TABLE

実表の定義を変更するときに,次に示す値を代入してください。

値(単位:キロバイト)

[図データ]

SZ_ALTER_VIEW

ビュー表の定義を変更するときに,次に示す値を代入してください。

値(単位:キロバイト)

[図データ]

SZ_CREATE_INDEX

インデクスを定義するときに,次に示す値を代入してください。

また,CREATE TABLE文で一意性制約定義,またはチャンクアーカイブ指定を指定するときにも,次に示す値を代入してください。

値(単位:キロバイト)

[図データ]

SZ_CREATE_TABLE

実表を定義するときに,次に示す値を代入してください。

値(単位:キロバイト)

[図データ]

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_SIZESTATEMENT_SIZECNCT_THD_SIZE+0.3
STATEMENT_SIZE文ハンドル管理情報

次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

注※

SQLパラレル実行機能を使用する場合に加算してください。

PREPARE_INFO_SIZESQL文の前処理情報

次に示す計算式から求めてください。

計算式(単位:バイト)

PREPARE_INFO_SIZEcol_num×214+param_num×80+idx_num×512

col_numSQLに指定した選択式の数

param_numSQLに指定した?パラメタの数

idx_numSQLで使用するインデクス数

PARAM_INFO_SIZEパラメタ格納領域

次に示す計算式から求めてください。

計算式(単位:バイト)

[図データ]

param_numSQLに指定した?パラメタの数

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_nummulti_node_numworker_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_SIZESQL実行管理領域

次に示す計算式から求めてください。

計算式(単位:キロバイト)

[図データ]

重要

■ビュー表または問合せ名を指定する場合の留意事項

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_numSQL文中に指定した集合演算子の数

FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。

query_num問合せの数

SQL文中に指定したFROM句の数から求めてください。

また,FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数×2で求めた値を加算してください。

window_numSQL文中に指定したウィンドウ関数の数

1つの問合せ指定中に,引数の異なるDISTINCT集合関数を複数指定している場合は,その指定数-1で求めた値も加算してください。

drvtbl_numSQL文中に指定した導出表の数

FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。

tblfunc_num

表関数導出表の個数

Σ(HASHGRP_SIZE):

SQL文に指定した問合せ単位にHASHGRP_SIZEを計算した合計値(単位:バイト)

Σ(WRK_TABLE_OPE_SIZE):

作成される作業表単位にWRK_TABLE_OPE_SIZEを計算した合計値(単位:バイト)

次に示すことについては,マニュアルHADB AP開発ガイドAPの性能向上に関する設計作業表が作成されるSQLを実行する際の考慮点を参照してください。

  • SQL文の実行時に作業表が作成されるかどうか

  • 作成される作業表の個数および構成列

Σ(LMTWRK_SIZE):

作成される作業表単位にLMTWRK_SIZEを計算した合計値(単位:バイト)

次に示すことについては,マニュアル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_SIZESQL実行結果格納領域

次に示す計算式から求めてください。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。

計算式(単位:バイト)

RESULT_WORK_SIZE=
    ↑(40+sum_col_sizerow_size
    +2×(sum_grp_sizesum_window_spec_size)
    +3×(sum_set_func_sizesum_dist_col_sizesum_window_func_size)
    +8×(all_col_numrow_num+2×(grp_col_numwindow_spec_col_num)
    +3×(set_func_numdist_col_numwindow_func_num))
    +sum_inpred_sizesum_reg_size
    +8×group_query_num+12×list_num
    +16×join_numsupquery_numsum_setop_size×3+full_join_drvc_size×3
    +(func_filepath_size+4)×(csvread_numauditread_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演算管理領域

次に示す計算式から求めてください。ただし,四則演算,論理演算,CASEスカラ関数およびANYを指定した配列要素参照を指定していない場合は0になります。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。

計算式(単位:バイト)

[図データ]

  • 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を指定した配列要素参照に指定した配列データの最大要素数

    該当する配列データが複数ある場合は,その中で最も大きい最大要素数で計算してください。

HASHGRP_SIZEハッシュグループ化作業領域

次に示す計算式から求めてください。ただし,サーバ定義のadb_sql_exe_hashgrp_area_sizeオペランドに0を指定している場合,またはSQLにGROUP BY句と集合関数が指定されていない場合は0になります。データ長の計算は,「表6‒9 各データ型のデータ長の一覧」を参照してください。

計算式(単位:バイト)

HASHGRP_SIZE=
  160+24×(grp_col_numset_func_num)+sum_grp_sizesum_set_func_sizehashgrp_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_SIZEDISTINCT集合関数の作業領域

SQL文中に,引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含む場合に求めてください。引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含まない場合は,0になります。

計算式(単位:バイト)

GRSETS_CNCT_SIZE =
 (1,6408,328×dset_func_numsql_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になります。

  1. コンマ結合,INNER JOIN,またはCROSS JOINを使用して,複数の表を=で結合する問合せ指定である

  2. 1.の条件の表に,マルチチャンク表が2つ以上含まれている

  3. 2.の条件のマルチチャンク表を結合する=の1つに,レンジインデクスを定義しているマルチチャンク表の列が指定されている

計算式(単位:バイト)

DHJOIN_CNCT_SIZE=
       128+dhjoin_tbl_num×64+(dhjoin_tbl_numdhjoin_query_num)×832
dhjoin_tbl_num

コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表の数

dhjoin_query_num

コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表が指定されている問合せ指定の数

IN_PRD_SIZEIN述語,限定述語実行管理領域

次に示す計算式から求めてください。ただし,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_SIZELIKE述語実行管理領域

次に示す計算式から求めてください。ただし,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_numlimit_num)÷↓(wrk_page_size−64)÷ROWSZ↓↑
  +(4+ROWSZ)×(offset_numlimit_num))÷1,024↑
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

SMALLINT

16

3

DECIMAL

48

4

NUMERIC

5

DOUBLE PRECISION

512

6

FLOAT

7

文字データ

CHAR

((2+定義長×2+7)÷8)×8

8

VARCHAR

((2+定義長×2+7)÷8)×8

9

日時データ

DATE

16

10

TIME

24

11

TIMESTAMP

40

12

バイナリデータ

BINARY

入力データファイル中の記述形式が16進の場合

((2+定義長×2+7)÷8)×8

13

入力データファイル中の記述形式が2進の場合

((2+定義長×8+7)÷8)×8

14

VARBINARY

入力データファイル中の記述形式が16進の場合

((2+定義長×2+7)÷8)×8

15

入力データファイル中の記述形式が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_SIZERANDOM_NUM_UNIFORM_WORK_SIZERANDOM_NUM_NORMAL_WORK_SIZERANDOMROW_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集合関数

計算式(単位:バイト)

SORTGRP_CNCT_SIZE=
         352×Σ(sortgrp_wrk_num)×sql_rthd_numLISTAGG_CNCT_SIZEARRAY_AGG_CNCT_SIZE
Σ(sortgrp_wrk_num

SQL文中にLISTAGG集合関数,またはARRAY_AGG集合関数を指定した問合せ指定ごとに変数sortgrp_wrk_numを求めてください。そして,それぞれ求めた値を合計してください。

sortgrp_wrk_num

ソートグループ化の作業領域の個数

次の数を合計したものを代入してください。

  • ALL(省略値)を指定したLISTAGG集合関数の指定数

  • DISTINCTを指定したLISTAGG集合関数の指定数×2

  • ARRAY_AGG集合関数の指定数

  • DISTINCT集合関数の指定数

  • 逆分布関数の指定数

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=
        (400328×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集合関数または逆分布関数の場合

    グループ化列のデータ長の合計

  • ウィンドウ関数の場合

    ウィンドウ分割句に指定された列のデータ長の合計

PRL_CNCT_SIZE

SQLパラレル実行機能用管理領域

SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は,0を代入してください。

計算式(単位:バイト)

PRL_CNCT_SIZE=
   1,438+8×(1+order_by_numgroup_by_num×7)
   +128×prl_scan_num+202×node_numPRL_NDMRG_CNCT_SIZEPRL_HASH_CNCT_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_SIZEPRL_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句の数

PROC_THD_SIZESQL処理リアルスレッド管理領域

次に示す計算式から求めてください。なお,変数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_SIZESQL処理リアルスレッド用ハッシュフィルタ管理領域

次のどちらかの指定が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_SIZESQL処理リアルスレッド用の部分集計管理領域

次に示すどれかの指定が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になります。

  1. コンマ結合,INNER JOIN,またはCROSS JOINを使用して,複数の表を=で結合する問合せ指定である

  2. 1.の条件の表に,マルチチャンク表が2つ以上含まれている

  3. 2.の条件のマルチチャンク表を結合する=の1つに,レンジインデクスを定義しているマルチチャンク表の列が指定されている

計算式(単位:バイト)

DHJOIN_PROC_SIZE=
       64+320×(dhjoin_tbl_numdhjoin_query_num
dhjoin_tbl_num

コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表の数

dhjoin_query_num

コンマ結合,INNER JOIN,またはCROSS JOINを使用して,=で結合する表が指定されている問合せ指定の数

setop_numSQL文中に指定した集合演算子の数

FULL OUTER JOINを指定した場合は,FULL OUTER JOINの数を加算してください。

drvtbl_numSQL文中に指定した導出表の数

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を計算した合計値(単位:バイト)

次に示すことについては,マニュアルHADB AP開発ガイドAPの性能向上に関する設計作業表が作成されるSQLを実行する際の考慮点を参照してください。

  • SQL文の実行時に作業表が作成されるかどうか

  • 作成される作業表の個数および構成列

Σ(LMTWRK_SIZE):

作成される作業表単位にLMTWRK_SIZEを計算した合計値(単位:バイト)

次に示すことについては,マニュアル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_SIZEMAX(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条件のネスト数

  • スカラ関数CONTAINSOR条件のネスト数

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エリアのセグメントサイズ(単位:ページ数)

次に示す計算式から求めてください。

SEGSIZE1セグメントの容量(単位:バイト)÷page_size
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

SMALLINT

3

DECIMAL

NUMERIC

1≦精度≦4

8

4

5≦精度≦8

5

9≦精度≦16

6

17≦精度≦38

16

7

DOUBLE PRECISION

8

8

FLOAT

9

文字データ

CHAR

定義長+7

10

VARCHAR

1≦定義長≦32,000

定義長+9

11

32,001≦定義長≦64,000

定義長+11

12

日時データ

DATE

8

13

TIME(p)

3+↑p÷2↑+7

14

TIMESTAMP(p)

7+↑p÷2↑+7

15

バイナリデータ

BINARY

定義長+7

16

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=(AUDREADSZAUDBLOCKSZ)×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_SIZEtbl_access_num × (TBL_ACCESS_INFO_SIZEOUTERJOIN_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_numchunk_numSGTBL-2)
dbarea_file_num

検索対象表が格納されているDBエリアのDBエリアファイル数

chunk_num

検索対象表のチャンク数(検索対象表がシングルチャンク表の場合は1)

SGTBL

検索対象表のセグメント数

SGTBLを求める計算式については,「5.8.1 データ用DBエリアの総ページ数の求め方」の「(2) 変数の説明」にある次の個所を参照してください。なお,検索対象表の種類によって参照先が異なります。

IDX_SCI_MEMB-treeインデクスを使用した検索時の表検索情報領域(単位:バイト)
IDX_SCI_MEMIDX_CHUNK_SCI_MEMIDX_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_numdup_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_numdup_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_MEMIDX_CHUNK_TXT_MEMIDX_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_NUMscan_nest_numsortcode_str_numTXT_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_numRESULT_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集合関数

計算式(単位:バイト)

SORTGRP_PROC_SIZE=
       352×Σ(sortgrp_cor_query_wrk_num)×uthd_numLISTAGG_PROC_SIZEARRAY_AGG_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集合関数の指定数

  • 逆分布関数の指定数

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

該当する要素の数

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_SIZE8,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としてください。

なお,この値はアクセスパス情報の表示結果から,次の手順で求めることができます。

  1. アクセスパス情報の表示結果の詳細表示の,表の検索方式に関する情報インデクスに関する情報を確認してください。次のどちらかの条件に該当するものをすべて探してください。

    • 表の検索方式がINDEX SCANであり,インデクスに関する情報の1つ目のインデクス情報のINDEX TYPEB-TREE(B-treeインデクス)である

    • 表の検索方式がKEY SCANである

  2. 手順1.の条件に該当し,かつインデクスに関する情報が次の両方の条件に該当するものをすべて探してください。

    • INDEX TYPERANGE(レンジインデクス)である

    • SKIP CONDCHUNKである

  3. 手順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 各データ型のデータ長の一覧」を参照してください。

データ長については,次に示す表から求めてください。

表6‒9 各データ型のデータ長の一覧

項番

分類

データ型

データ長(単位:バイト)

1

数データ

INTEGER

8

2

SMALLINT

4

3

DECIMAL

NUMERIC

1≦精度≦4

2

4

5≦精度≦8

4

5

9≦精度≦16

8

6

17≦精度≦38

16

7

DOUBLE PRECISION

8

8

FLOAT

9

文字データ

CHAR

定義長

10

VARCHAR

1≦定義長≦32,000

定義長+2

11

32,001≦定義長≦64,000

定義長+4

12

日時データ

DATE

4

13

TIME(p)

3+↑p÷2↑

14

TIMESTAMP(p)

7+↑p÷2↑

15

バイナリデータ

BINARY

定義長

16

VARBINARY

定義長+2

17

配列データ

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_numWIO_NUM)+wrk_page_size)÷1,024↑×1.05
変数の説明

(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_COMMUSZRCVBUFSNDBUF

変数の説明

RCVBUF受信バッファ

次に示す計算式から求めてください。

計算式(単位:キロバイト)
RCVBUF= ↑(352+CMSG)÷1,024↑
CMSGHADBクライアントからの送信データサイズ

マニュアルHADB AP開発ガイドHADBクライアントのメモリ所要量の見積もりHADBクライアントとHADBサーバの通信時に使用するメモリ所要量にある変数CMSGを参照してください。

SNDBUF送信バッファ

初期確保時の送信バッファは次に示す値を代入してください。

値(単位:キロバイト)
SNDBUF= 4

初期確保した送信バッファを超える送信データが作成されると,HADBサーバは次に示す計算式で求められた値を再確保します。

計算式(単位:キロバイト)
SNDBUF= ↑SMSG÷4,096↑×4
SMSGHADBサーバの送信データサイズ

送信データサイズは処理の内容によって異なります。各処理で確保される送信データサイズを次の表に示します。

表6‒10 各処理で確保される送信データサイズの一覧

項番

処理内容

送信データサイズの計算式(単位:バイト)

1

SQL文を実行した場合

[図データ]

2

SQL文の実行がNOROWの場合

[図データ]

3

FETCHの場合

[図データ]

4

FETCHNOROWの場合(一括転送で1行以上FETCHできた場合)

[図データ]

5

SQL文の前処理をした場合

[図データ]

6

adbdbstatusコマンドを実行した場合

[図データ]

(凡例)

srv_base_info送信データの基本情報

152バイトを代入してください。

srv_execute実行固有情報

24バイトを代入してください。

srv_fetchFETCH固有情報

16バイトを代入してください。

srv_norowNOROW固有情報

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_sizeFETCH処理時の一括送信行数

クライアント定義adb_clt_fetch_sizeオペランドの指定値を代入してください。クライアント定義adb_clt_fetch_sizeオペランドについては,マニュアルHADB AP開発ガイド性能に関するオペランドを参照してください。

PREPARE_INFO_SIZESQL文の前処理情報

(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.18.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の求め方(マルチチャンク表の場合)」の変数ROWDATASEGNUM(i,k)

■シングルチャンク表の場合

(b) 変数SGCOLUMNTBLの求め方(シングルチャンク表の場合)」の変数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_nummax_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エリアのセグメントサイズ(単位:ページ数)

次に示す計算式から求めてください。

SEGSIZE1セグメントの容量(単位:バイト)÷page_size
RTHD_DATACOMPRESS(i):更新行のカラム化機能の対象となるi番目のカラムストア表のデータ圧縮用作業領域

6.3.6 adbimportコマンド実行時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(adbimportコマンド実行時)」の「(d) 変数RTHD_DATALOADの求め方」の変数RTHD_DATACOMPRESSを参照して求めてください。

(3) ヒープメモリの所要量の求め方(通常運用時)

通常運用時のヒープメモリ(HEAP_EXECSZ)の所要量は,次に示す計算式から求めてください。

計算式(単位:キロバイト)

HEAP_EXECSZmax_sql( UTHD_WORKSZrthd_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

問合せ式本体に副問合せを含むかどうかによって,求め方が異なります。

■問合せ指定に副問合せを含まない場合

次の計算式から求めてください。

QSscan_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"