Hitachi

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


6.3.13 adbmergechunkコマンド実行時のメモリ所要量の求め方

adbmergechunkコマンドを実行する場合,HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

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

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

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

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

〈この項の構成〉

(1) プロセス共通メモリの所要量の求め方(adbmergechunkコマンド実行時)

adbmergechunkコマンド実行時のプロセス共通メモリ(PROC_MERGCSZ)の所要量は,次に示す計算式から求めてください。

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

[図データ]

変数の説明
注※1

処理対象インデクスにB-treeインデクスが含まれる場合に加算してください。

注※2

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※3

複数のadbmergechunkコマンドを同時に実行する場合は,各adbmergechunkコマンドが使用するメモリ所要量を求めてください。そして,それぞれで求めたメモリ所要量を合計してください。

(a) 変数PROC_MNGの求め方

変数PROC_MNGは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
PROC_MNG=
    5+DICIOASCANIDXRBLDBUF_CTLSTSPAGEALLOCCHUNKPROC_AUDINFSZ
注※

監査証跡機能が有効な場合に加算してください。

変数の説明

DIC処理対象表の定義情報を取得するメモリ

6.3.6 adbimportコマンド実行時のメモリ所要量の求め方」の「(1) プロセス共通メモリの所要量の求め方(adbimportコマンド実行時)」の「(a) 変数PROC_IMPTの求め方」の変数DICを参照してください。

IOAデータベースアクセスで使用するメモリ

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

計算式(単位:キロバイト)
IOAsql_size+(scan_buff_sizeoffset_area×2)×scan_rthd
  • sql_size

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

    32+1,024

  • scan_buff_size

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

    マージチャンクオプションadb_mergechunk_scan_buff_sizeの指定値×1,024

  • offset_area

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

    (8×処理対象インデクスの構成列数×(scan_buff_size×1,024

    ÷(処理対象インデクスの構成列長の合計値+8)))÷1,024

  • scan_rthd

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

    ↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値-1)÷2↓
SCANインデクスレコードファイルの出力処理で必要となるメモリ

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

計算式(単位:キロバイト)
SCAN=
   ↑(write_size×scan_rthd×b-tree_index_num)↑
  • write_size

    マージチャンクオプションadb_mergechunk_dvix_wtbuff_sizeの指定値

  • scan_rthd

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

    ↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値-1)÷2↓
  • b-tree_index_num

    処理対象のB-treeインデクス数

IDXRBLDBUF_CTLマージチャンク用バッファ制御情報

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

計算式(単位:キロバイト)
IDXRBLDBUF_CTL=
   ↑(248+BUFBLK)÷1,024↑×scan_rthd
STSステータス情報を退避するメモリ

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

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

[図データ]

idx_num

処理対象のインデクス数

b_tree_idx_num

処理対象表に定義されたB-treeインデクスの数

range_idx_num

処理対象表に定義されたレンジインデクスの数

scan_rthd

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

↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値-1)÷2↓
text_idx_num

処理対象表に定義されたテキストインデクスの数

PAGEALLOCマージチャンク用ページ割り当て制御情報

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

計算式(単位:キロバイト)
PAGEALLOCdividx_rthd×310
  • dividx_rthd

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

    マージチャンクオプションadb_mergechunk_rthd_numの指定値-1
CHUNKチャンク管理ブロック

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

計算式
CHUNK= ↑(8×(chunk_num×2)+30,000)÷1,024↑
  • chunk_num

    処理対象表に作成されているチャンク数

PROC_AUDINFSZ

6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(r) 変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(b) 変数PROC_IDXの求め方

変数PROC_IDXは,次に示す計算式から求めてください。

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

[図データ]

変数の説明

KEYSZ

B-treeインデクスのキー長(単位:バイト)

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

なお,可変長データのB-treeインデクスのキー長を求める際は,「表5‒19 B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また,処理対象表に複数のB-treeインデクスが定義されている場合は,定義されたB-treeインデクスの中で最大のキー長を使用してください。

scan_rthd

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

↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値-1)÷2↓
rd_buff_size

マージチャンクオプションadb_mergechunk_dvix_rdbuff_sizeの指定値

ld_buff_size

マージチャンクオプションadb_mergechunk_dvix_wtbuff_sizeの指定値

CTRL
  • インデクスのインデクス構成列が固定長の場合

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

  • インデクスのインデクス構成列に可変長を含む場合

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

text_idx_num

処理対象表に定義されたテキストインデクス数

dividx_rthd

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

マージチャンクオプションadb_mergechunk_rthd_numの指定値-1
b_tree_idx_num

処理対象のB-treeインデクス数

(c) 変数PROC_IDXREBUILDの求め方

変数PROC_IDXREBUILDは,次に示す計算式から求めてください。

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

[図データ]

idx_num

再作成対象のB-treeインデクス数

PROC_IDXREBUILD_MEM(k)

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

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

PROC_IDXREBUILD_MEM(k)=
  ↑(184+256×idx_col_num+(18+256×↑idx_lv÷16↑)×dividx_rthdKEYSZ+(idx_col_num+1)×2+4)÷1,024↑

(d) 変数PROC_RNGIDXの求め方

変数PROC_RNGIDXは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
PROC_RNGIDX= ↑64×rngidx_num÷1,024↑
変数の説明

rngidx_num再作成対象のレンジインデクス数

(e) 変数PROC_CHUNK_INFOの求め方

変数PROC_CHUNK_INFOは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
PROC_CHUNK_INFO= ↑(1+index_num)×120×(chunk_num+1)÷1,024↑
変数の説明

index_numマージチャンク対象表に対して定義したインデクスの数

chunk_numマージチャンク対象表のチャンク数の最大値

なお,adbmergechunkコマンドを実行すると,変数PROC_CHUNK_INFOで求められるサイズ分,プロセス共通メモリが確保されます。adbmergechunkコマンドが完了すると,確保されたプロセス共通メモリは解放されます。

しかし,次の理由で削除仕掛中のチャンクが残っている場合,確保されたプロセス共通メモリは解放されません。削除仕掛中のチャンクをすべて削除すると,解放されます。

  • 実行中のadbmergechunkコマンドが,マージ先チャンクの完成からマージ元チャンクの削除完了までの間に中断した場合

    adbcancelコマンドを実行したとき,HADBサーバでメモリ不足が発生したときなどが該当します。

  • adbmergechunkコマンドの--purge-chunkオプションにNOWAITを指定して実行した場合に,マージチャンク対象の表を参照している処理が存在したとき

(f) 変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは,次に示す計算式から求めてください。なお,マルチノード機能を使用するかどうかで,計算式が異なります。

マルチノード機能を使用しない場合の計算式(単位:キロバイト)

[図データ]

マルチノード機能を使用する場合の計算式(単位:キロバイト)

[図データ]

変数の説明

DBUPDINF_ENT_NUM

DBエリア,表,インデクス,およびチャンク更新情報のエントリ数

次に示す計算式から求めてください。なお,マルチノード機能を使用するかどうかで,計算式が異なります。

マルチノード機能を使用しない場合の計算式(単位:個数)

[図データ]

マルチノード機能を使用する場合の計算式(単位:個数)

[図データ]

index_num

マージチャンク対象表に定義しているインデクス数

chunk_num

マージするチャンク数

(g) 変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは,次に示す計算式から求めてください。

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

[図データ]

変数の説明

rthd_num

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

マージチャンクオプションadb_mergechunk_rthd_numの指定値-1

(2) リアルスレッド固有メモリの所要量の求め方(adbmergechunkコマンド実行時)

adbmergechunkコマンド実行時のリアルスレッド固有メモリ(RTHD_MERCHKSZ)の所要量は,次に示す計算式から求めてください。

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

[図データ]

変数の説明
注※1

B-treeインデクスを対象にした場合に加算してください。

注※2

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※3

処理対象インデクスにテキストインデクスが含まれる場合に加算してください。

(a) 変数IDXRBLDBUFの求め方

変数IDXRBLDBUFは,次に示す計算式から求めてください。

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

IDXRBLDBUF=
  ↑(RBLD_SQBLKRBLD_SQIORBLD_SQPGERBLD_SQHS)÷1,024↑

変数の説明

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

計算式(単位:バイト)

RBLD_SQBLKrbld_blknum×(112+↑RBLD_BLKSZ÷rbld_pagesize÷64↑×24)
RBLD_SQIO次に示す計算式から求めてください。

計算式(単位:バイト)

RBLD_SQIO= 568×rbld_blknum
  • rbld_blknum

    マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

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

計算式(単位:バイト)

RBLD_SQPGE=
  (176+rbld_pagesizeBUFLOG)×(RBLD_BLKSZ÷rbld_pagesize)×rbld_blknum
RBLD_SQHS次に示す計算式から求めてください。

計算式(単位:バイト)

RBLD_SQHS= 8×rbld_blknum+40×rbld_blknum
  • rbld_blknum

    マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

(b) 変数RTHD_SCANの求め方

変数RTHD_SCANは,次に示す計算式から求めてください。

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

RTHD_SCAN = MAX( RTHD_EXESQLSZ , RTHD_EXESQLDICSZ

次に示すSQL文を実行したものと仮定して,変数RTHD_EXESQLSZおよび変数RTHD_EXESQLDICSZの値をそれぞれ求めてください。

SELECT 選択式 FROM "対象表名"
注※

CHAR(16)の列と,処理対象表に定義したインデクスの全インデクス構成列について重複を排除した列を指定したものとして求めてください。

変数の説明

RTHD_EXESQLSZ

6.3.4 通常運用時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(通常運用時)」の「(c) 変数RTHD_EXESQLSZの求め方」を参照してください。

RTHD_EXESQLDICSZ

6.3.4 通常運用時のメモリ所要量の求め方」の「(2) リアルスレッド固有メモリの所要量の求め方(通常運用時)」の「(g) 変数RTHD_EXESQLDICSZの求め方」を参照してください。

(c) 変数SORTIOBUFの求め方

変数SORTIOBUFは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
SORTIOBUFsort_io_buff_size×sort_rthd
変数の説明
  • sort_io_buff_size

    16を代入してください。

  • sort_rthd

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

    マージチャンクオプションadb_mergechunk_rthd_numの指定値-1

(d) 変数SORTBUFの求め方

変数SORTBUFは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
SORTBUF= (48+sort_buff_size×1,024)×sort_rthd

変数の説明

sort_rthd

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

マージチャンクオプションadb_mergechunk_rthd_numの指定値-1
sort_buff_size

マージチャンクオプションadb_mergechunk_sort_buff_sizeの指定値

注※

ソート処理では,作業用ワークファイルが作成されます。このファイルの容量を最小にする変数sort_buff_sizeの計算式を次に示します。変数sort_buff_sizeは,次に示す計算式を満たすようにしてください。ただし,メモリに余裕がない場合,またはほとんどのデータがインデクスキー順に並んでいる場合は,必要以上に大きな値を指定しないでください。

計算式

[図データ]

変数の説明

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

計算式

REC_SIZE= (KEYSZSYS1)+SYS2
KEYSZ処理対象表に定義されたB-treeインデクスのキー長

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

なお,可変長データのB-treeインデクスのキー長を求める際は,「表5‒19 B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また,処理対象表に複数のB-treeインデクスが定義されている場合は,定義されたB-treeインデクスの中で最大のキー長を使用してください。

SYS1次に示す値を仮定してください。
  • 処理対象表に定義されたインデクスのインデクス構成列がすべて固定長の場合:10

  • 処理対象表に定義されたインデクスのインデクス構成列に可変長を含む場合:12

SYS2次に示す値を仮定してください。
  • 処理対象表に定義されたインデクスが可変長の複数列インデクスの場合

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

    インデクス構成列数×4)

  • そのほかのインデクスの場合

    0

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

計算式

BLKREC_SIZE+(KEYSZ+8)+56
row_num

処理対象表に格納されている行数

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

計算式

KEY_INFREC_SIZE+(KEYSZ+8)+28
COL_INFO次に示す計算式から求めてください。

計算式

COL_INFO= 2,112+(MULTI_KEY_INFO×32)+(KEYSZ+8)
MULTI_KEY_INFO次に示す値を仮定してください。
  • 処理対象表に定義されたB-treeインデクスが可変長の複数列インデクスの場合

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

    インデクス構成列数×2)+2

  • そのほかのB-treeインデクスの場合

    5

(e) 変数RTHD_IDXRECの求め方

変数RTHD_IDXRECは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
RTHD_IDXREC=
   ↑(386+328×(idx_num−1)+32×max_idx_col_num
     +(64+buf_size×1,024)×2×idx_num)÷1,024↑
変数の説明
  • idx_num

    再作成対象のB-treeインデクス数

  • max_idx_col_num

    再作成対象のB-treeインデクスのインデクス構成列数の最大値

  • buf_size

    1,024を代入してください。

(f) 変数RTHD_IDXREBUILDの求め方

変数RTHD_IDXREBUILDは,次に示す計算式から求めてください。

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

[図データ]

変数の説明

idx_num

再作成対象のB-treeインデクス数

RTHD_IDXREBUILD_MEMk

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

計算式(単位:キロバイト)
RTHD_IDXREBUILD_MEMk)=
  ↑(61,458+↑MAX(255,KEYSZ)÷2↑×2+3,070
   +↑KEYSZCTRL÷8↑×8+MAX(255,KEYSZ)+14
   +↓8+page_size×95÷100↓×2)÷1,024↑
KEYSZ

B-treeインデクスのキー長(単位:バイト)

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

なお,可変長データのB-treeインデクスのキー長を求める際は,「表5‒19 B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL
  • インデクス構成列のキー長がすべて固定長の場合

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

  • インデクス構成列のキー長に可変長を含む場合

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

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ(単位:バイト)

6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(2) グローバルバッファページの所要量の求め方(HADBサーバ開始時)」にある「表6‒3 DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

(g) 変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは,次に示す計算式から求めてください。

計算式(単位:キロバイト)
RTHD_RNGIDX= ↑(16+128×rngidx_num)×scan_rthd÷1,024↑
変数の説明
  • rngidx_num

    再作成対象のレンジインデクス数

  • scan_rthd

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

    ↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値-1)÷2↓

(h) 変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは,次に示す計算式から求めてください。

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

[図データ]

変数の説明

idx_num

処理対象表に定義されたテキストインデクスの数

RTHD_TXTIDXBUILD_MEM(k)

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

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

[図データ]

buff_blk_size

4,096を代入してください。

buff_blk_num

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

idx_div_num

k番目のテキストインデクスのインデクス構成列定義長

txt_sort_buff_size

マージチャンクオプションadb_mergechunk_txt_buff_sizeの指定値

(3) ヒープメモリの所要量の求め方(adbmergechunkコマンド実行時)

adbmergechunkコマンド実行時のヒープメモリ(HEAP_MERCHKSZ)の所要量は,次に示す計算式から求めてください。

計算式(単位:キロバイト)
HEAP_MERCHKSZ= Σ(505×sort_rthd
注※

複数のadbmergechunkコマンドを同時に実行する場合は,各adbmergechunkコマンドが使用するヒープメモリの所要量を求めてください。そして,それぞれで求めたヒープメモリの所要量を合計してください。

変数の説明

sort_rthd

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

マージチャンクオプションadb_mergechunk_rthd_numの指定値-1