Hitachi

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


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

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

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

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

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

〈この項の構成〉

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

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

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

[図データ]

注※

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

変数の説明

(a) 変数PROC_CNCTSZの求め方

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

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

[図データ]

変数の説明

BUFCNCT:コネクションバッファ

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

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

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オペランドの指定値

(b) 変数PROC_TOTALSQLSSZの求め方

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

計算式(単位:キロバイト)
PROC_TOTALSQLSSZ= MAXSQLWRK+TOTALSQLSCT+PREDICSZ

変数の説明

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

値式の数

drvtblnum

導出表の個数

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

導出表に指定した集合演算の数

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文の前処理で使用される前処理結果管理領域

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

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

[図データ]

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

挿入対象列の数

subqun

副問合せの数

ord_num

ORDER BY句に指定した列の数

queryn

問合せ指定の数

logicn

AND,ORおよびNOTの論理演算の数

predn

述語の数

base_num

ビュー定義に指定した基表の数

sel_num

ビュー定義に指定した問合せ指定の選択式の数

pwg

ラベル付き間隔の数

scl

列数(列指定の数と,*指定の展開後の列指定の数の総和)

sgc

グループ化列数

ssk

ORDER BY句に指定したソートキーの数

srw

ROWの対象表に含まれるDECIMAL型,TIMESTAMP型の数

exp_num

値式の総数

sum_view_object()

括弧内のものについて,1SQL文内で指定したビュー表のビューオブジェクトサイズの合計値

view_size

ビューオブジェクトのサイズ(ディクショナリ表(実表)のSQL_VIEWS表のVIEW_OBJECT_SIZE列の値)

qexp_coln

集合演算中の問合せ式の列数

gname_coln

グループ化列の列名の数

default_coln

DEFAULT句を指定した列数

default_n

キーワード「DEFAULT」を指定した個数

act_num

CASE式のTHENとELSEの総数

decode_revn

スカラ関数DECODEの返却値の数

fmt_len

スカラ関数CONVERTの書式長

obysorn

ORDER BY句に指定したソート項目の数

pw_when

CASE式に指定したWHENの個数

projn

値式の数

fulljoin_num

SQL文に指定されたFULL OUTER JOINの数

fj_join_num

FULL OUTER JOINに指定された結合表の数

gbyn

GROUP BY句の数

qexp

集合演算の数

query_expn

問合せ式の数

winfuncn

ウィンドウ関数の数

withlistnum

WITHリスト要素の数

APATHVIEW

アクセスパスを表示する際に作成されるアクセスパス情報管理領域

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

計算式(単位:キロバイト)
APATHVIEW=
   ↑((9,728+1,024×scl)×tbln+2,200)÷4,096↑×5
tbln

FROM句に指定した表の数

scl

列数(列指定の数と,*指定の展開後の列指定の数の総和)

PREDICSZ

次に示す値を代入してください。

値(単位:キロバイト)

[図データ]

(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.6.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(3)(d) 変数DBAREAINFの求め方」を参照して,変数DBAREAINFを再度求めてください。

(f) 変数PROC_UPDSZの求め方

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

計算式(単位:キロバイト)
PROC_UPDSZ= BUFUPD×upd_users

変数の説明

upd_users

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

BUFUPD

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

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

計算式(単位:キロバイト)
BUFUPD=
    ↑(56+BUFSCNC+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

システム表を更新するため,更新ページ管理用のプロセス共通メモリを確保します。

BUFSCNC

次に示す計算式から求めてください。ただし,サーバ定義に-kオプションを指定したadbbuffオペランドがない場合は,変数BUFSCNCは0としてください。

計算式(単位:バイト)
BUFSCNC=
    (40×DBAREA_NUM+16,560+ΣSCNCTRE)×(RTHNUM+1)
DBAREA_NUM

データ用DBエリアの総数

ΣSCNCTRE

-kオプションを指定したadbbuffオペランドごとに求めた変数SCNCTREの合計値

SCNCTRE

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

計算式

SCNCTRE=
    80×(adbbuff_opt_k÷SCAN_BUCKET+1)
  • adbbuff_opt_k

    adbbuffオペランドの-kオプションの指定値

  • SCAN_BUCKET

    adbbuffオペランドに-kオプションが指定されている場合は,サーバ定義adb_sys_rthd_numオペランドの指定値と-kオプションの指定値のうち,小さい方の値を代入してください。

RTHNUM

6.3.3(3)(a) 変数SCIの求め方」の変数RTHNUMを参照してください。

BUFHIST

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

計算式(単位:バイト)
BUFHIST=
    96×RTHNUM+512+BUFMEM(RTHNUM+257)+BUFMEM(RTHNUM+4,097)
BUFMEM

6.3.3(3)(c) 変数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(3)(c) 変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

(g) 変数PROC_UPDLISTSZの求め方

変数PROC_UPDLISTSZは,マルチノード機能適用時に加算します。次に示す計算式から求めてください。

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

[図データ]

変数の説明

max_users

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

(2) リアルスレッド固有メモリの所要量の求め方(通常運用時)

通常運用時のリアルスレッド固有メモリ(RTHD_EXECSZ)の所要量は,次の計算式から求めてください。

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

[図データ]

変数の説明

(a) 変数RTHD_CNCTSZの求め方

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

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

[図データ]

変数の説明

TRANSNAP

6.3.4(1)(c) 変数PROC_EXECSQLSZの求め方」の変数TRANSNAPを参照してください。

SQLTRC

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

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

(b) 変数RTHD_DEFSQLSZの求め方

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

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

[図データ]

変数の説明

SZ_ALTER_TABLE

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

値(単位:キロバイト)

[図データ]

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

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

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

[図データ]

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:アクセスパスを表示する際に作成されるアクセスパス情報管理領域

6.3.4(1)(b) 変数PROC_TOTALSQLSSZの求め方」にある変数APATHVIEWを参照してください。

CNCT_THD_SIZE: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文中に指定したウィンドウ関数の数

drvtbl_num:SQL文中に指定した導出表の数

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

csvread_num:

システム定義関数ADB_CSVREADを指定した表関数導出表の個数

Σ(HASHGRP_SIZE):

SQL文に指定した問合せ単位にHASHGRP_SIZEを計算した合計値

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

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

  • LIMIT句を指定したSQL文が作業表を作成するかどうか

  • 作成される作業表の個数

なお,LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は,集合演算を構成する問合せ指定ごとに,LIMIT句の指定値が適用されます。

注 ビュー表指定時の留意事項

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
MAX(CSVREAD_WORK_SIZE):

システム定義関数ADB_CSVREADを指定した表関数導出表ごとに求めてください。その中で,最も大きい値を代入してください。

RESULT_WORK_SIZE:SQL実行結果格納領域

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

計算式(単位:バイト)

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
  • 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

  • join_num

    結合表の数

    FULL OUTER JOINの場合は,1つ当たり2とカウントしてください。

  • supquery_num

    副問合せの数

  • sum_setop_size

    各集合演算について,集合演算の結果の選択式のデータ長を合計してください。そして,それらを合計した値を代入してください。

  • full_join_drvc_size

    FULL OUTER JOINを指定した各問合せ指定について,選択式のデータ長を求めてください。そして,それらを合計した値を代入してください。

OPE_WORK_SIZE:演算管理領域

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

計算式(単位:バイト)

[図データ]

arith_num:各値式中の四則演算子(+,−,*または/)の数の最大値

concat_num:各値式中の連結演算子(+または||)およびスカラ関数CONCATの数の合計値の中で最大の値

logical_num:探索条件中の論理演算子の数の最大値

case_size:CASE式の結果長の合計値

sclfunc_size:スカラ関数の結果長の合計値

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

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

計算式(単位:バイト)

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集合関数

計算式(単位:バイト)

[図データ]

  • sql_rthd_num

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

  • hashtbl_row_num

    ハッシュテーブルの最大行長

    6.16.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

  • hashtbl_col_num

    SQL文中の指定内容に従って求めた値のうち,最大値を代入

    ■複数の表を=で結合する問合せ指定

    ハッシュテーブル列数の最大のものになります。問合せ指定ごとのハッシュテーブルの列数を求める場合,=で結合している各表に対して選択式および探索条件中に指定したすべての列の数を求めてください。そのあとで求めた表ごとの値のうち,最小値を除いた合計値を求めてください。

    ■副問合せ

    副問合せごとに,次に示す値の合計を求めてください。その中で最大の値が副問合せの値になります。

    ・副問合せの選択式に指定した列数

    ・副問合せに指定した集合関数の数

    ・探索条件中の外への参照列を含む述語に指定した列の数

    ■GROUP BY句,およびDISTINCTを指定した集合関数

    GROUP BY句,およびDISTINCT集合関数を指定した問合せごとに次に示す値の合計を求めてください。その中で最大の値がGROUP BY句およびDISTINCTを指定した集合関数の値になります。

    ・GROUP BY句に指定したグループ化列の数

    ・集合関数の数

  • bucket_num

    ハッシュテーブルを使用した検索時に作成される作業表の数

    6.16.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

  • hashtbl_num

    ハッシュテーブル数

    6.16.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

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

計算式(単位:バイト)

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

計算式(単位:バイト)

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

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

  • 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

SMALLINT

16

3

DECIMAL

48

4

DOUBLE PRECISION

512

5

文字データ

CHAR

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

6

VARCHAR

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

7

日時データ

DATE

16

8

TIME

24

9

TIMESTAMP

40

10

バイナリデータ

BINARY

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

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

11

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

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

12

VARBINARY

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

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

13

入力データファイル中の記述形式が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.*

計算式の例(単位:バイト)

[図データ]

PROC_THD_SIZE:SQL処理リアルスレッド管理領域

次に示す計算式から求めてください。なお,変数RESULT_WORK_SIZE,変数OPE_WORK_SIZE,変数HASHGRP_SIZE,および変数COR_QUERY_SIZEについては,上記にある各計算式から求めた値を代入してください。

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

[図データ]

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集合関数

計算式(単位:バイト)

[図データ]

  • 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.16.3 ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

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:

外への参照列を含む副問合せ中に指定されているウィンドウ関数の数

limit_cor_query_num:

外への参照列を含む副問合せ中に指定されているLIMIT句の数

cor_query_num:

外への参照列を含む副問合せ,およびその副問合せ中に含まれる副問合せの合計値

Σ(drvtbl_row_len×MIN(drvtbl_row_num,1,044,480)):

導出表を指定する場合に,導出表ごとに求めてください。そして,求めた値を合計してください。

  • drvtbl_row_len

    導出表の選択式のデータ長を合計した値を代入してください。

    データ長の計算は,「表6-8 各データ型のデータ長の一覧」を参照してください。

  • 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

    変数in_query_numの対象となる述語の副問合せの選択式のデータ長を代入してください。

    データ長の計算は,「表6-8 各データ型のデータ長の一覧」を参照してください。

  • in_query_drvc_num

    変数in_query_numの対象となる述語の副問合せの行数を代入してください。行数がわからない場合は,1,044,480を代入してください。

leftouter_num:

LEFT OUTER JOINの指定数

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

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

  • LIMIT句を指定したSQL文が作業表を作成するかどうか

  • 作成される作業表の個数

なお,LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は,集合演算を構成する問合せ指定ごとに,LIMIT句の指定値が適用されます。

注 ビュー表指定時の留意事項

SQL文中にビュー表を指定した場合は,そのビュー表のビュー定義に指定した問合せ指定を導出表として記述したものとして計算する必要があります。

csvread_num

システム定義関数ADB_CSVREADを指定した表関数導出表の個数

Σ(csvread_filename_len+4)

システム定義関数ADB_CSVREADを指定した表関数導出表ごとに求めてください。そして,求めた値を合計してください。

csvread_filename_len

アクセスするファイルのファイル名(フルパス)の長さ

Σ((csvread_row_len+4)×MIN(csvread_row_num,65,025))

システム定義関数ADB_CSVREADを指定した表関数導出表ごとに求めてください。そして,求めた値を合計してください。

csvread_row_len

システム定義関数ADB_CSVREADを指定した表関数導出表の列のデータ長の合計

データ長の計算は,「表6-8 各データ型のデータ長の一覧」を参照してください。

csvread_row_num

システム定義関数ADB_CSVREADを指定した表関数導出表の行数

行数がわからない場合は,65,025を代入してください。

Σ(CSVREAD_WORK_SIZE)

システム定義関数ADB_CSVREADを指定した表関数導出表ごとに求めてください。そして,求めた値を合計してください。

SCAN_WORK_SIZE:検索作業領域

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

計算式(単位:バイト)

[図データ]

KEYSZ:検索に使用するB-treeインデクスのキー長

5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を参照してください。

idx_col_num

検索に使用するB-treeインデクスの構成列数

logical_num

探索条件中の論理演算子の数の最大値

scan_str_num

次に示すどちらかの文字数を代入してください。

  • テキストインデクスを使用するLIKE述語のパターン文字列に指定した文字列の文字数

  • スカラ関数CONTAINSに指定した検索文字列の文字数

パターン文字列が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を代入してください。

TXT_WORK_SIZE

テキストインデクスの作業領域

次の計算式から求めてください。なお,テキストインデクスを定義していない場合,またはテキストインデクスを使用しない場合は0を代入してください。

計算式(単位:バイト)

[図データ]

BUF_DLYSZ

更新ページの通知領域

次の値を代入してください。

値(単位:キロバイト)

[図データ]

ARC_DIR_PATH

削除対象のアーカイブディレクトリのパス名を管理する領域

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

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

[図データ]

archivedir_path_num

TRUNCATE TABLE文を実行する場合は,1を代入してください。

PURGE CHUNK文を実行する場合は,削除対象のチャンク数を代入してください。

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

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

項番

分類

データ型

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

1

数データ

INTEGER

8

2

SMALLINT

4

3

DECIMAL

1≦精度≦4

2

4

5≦精度≦8

4

5

9≦精度≦16

8

6

17≦精度≦38

16

7

DOUBLE PRECISION

8

8

文字データ

CHAR

定義長

9

VARCHAR

定義長+2

10

日時データ

DATE

4

11

TIME(p)

3+↑p÷2↑

12

TIMESTAMP(p)

7+↑p÷2↑

13

バイナリデータ

BINARY

定義長

14

VARBINARY

定義長+2

(凡例)

p:小数秒の桁数(0,3,6,9または12。省略した場合は0を仮定)

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

    初期設定オプションadb_init_wrk_page_sizeの指定値

  • WIO_NUM

    クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値(ただし,adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値)と変数UTHNUMのうち,小さい方の値を代入してください。変数UTHNUMについては,「6.3.3(3)(a) 変数SCIの求め方」を参照してください。

(g) 変数RTHD_EXESQLDICSZの求め方

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

なお,対象表がビュー表の場合は,計算式で求めた値に32キロバイトを加算してください。

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

[図データ]

変数の説明

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に加算してください。

繰り返し因子に指定された繰り返しの数については,「6.3.4(2)(c) 変数RTHD_EXESQLSZの求め方」の「表6-7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

quantifier_num

パターン文字列に指定された正規表現内の繰り返し因子を除く量指定子の数

char_class_num

パターン文字列に指定された正規表現内の文字クラスの数の合計値

文字クラスに繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「(¥d{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数char_class_numに加算してください。

繰り返し因子に指定された繰り返しの数については,「6.3.4(2)(c) 変数RTHD_EXESQLSZの求め方」の「表6-7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

normal_char_set_num

パターン文字列に指定された正規表現内の正規文字集合識別子指定の数の合計値

正規文字集合識別子指定に繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「([[:alpha:]]{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数normal_char_set_numに加算してください。

繰り返し因子に指定された繰り返しの数については,「6.3.4(2)(c) 変数RTHD_EXESQLSZの求め方」の「表6-7 繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

参考

「([[:alpha:]]{10}){10}」の場合は,正規文字集合も繰り返しているため,変数char_list_numにも100を加算する必要があります。

char_list_num

パターン文字列に指定された正規表現内の正規文字集合の数の合計値

正規文字集合に繰り返し因子が指定されている場合は,その繰り返し数を加算してください。また,「([abc]{10}){10}」のように繰り返し因子がネストしている場合は,繰り返し数を乗算してください。そして,乗算した結果を,変数char_list_numに加算してください。

繰り返し因子に指定された繰り返しの数については,「6.3.4(2)(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.*

計算式の例(単位:バイト)

[図データ]

(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‒9 各処理で確保される送信データサイズの一覧

項番

処理内容

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

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文の前処理情報

6.3.4(2)(c) 変数RTHD_EXESQLSZの求め方」の変数PREPARE_INFO_SIZEを参照してください。

APATHVIEW:アクセスパスを表示する際に作成されるアクセスパス情報管理領域

6.3.4(1)(b) 変数PROC_TOTALSQLSSZの求め方」にある変数APATHVIEWを参照してください。

(i) 変数RTHD_EXPSQLTRCSZの求め方

変数RTHD_EXPSQLTRCSZは,SQLトレースバッファの拡張時に加算します(変数RTHD_EXPSQLTRCSZの値が32,768キロバイトを超えると,SQLトレースバッファが拡張されます)。次に示す計算式から求めてください。

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

[図データ]

変数の説明

PARAM_INFO_SIZE

6.3.4(2)(c) 変数RTHD_EXESQLSZの求め方」の変数PARAM_INFO_SIZEを参照してください。

array_num

一括更新する際に指定した?パラメタセットの数