Hitachi

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


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

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

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

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

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

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

〈この項の構成〉

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

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

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

[図データ]

変数の説明
注※1

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

注※2

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

注※3

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

(a) 変数PROC_MNGの求め方

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

計算式(単位:キロバイト)
PROC_MNG=
    5+DIC+IOA+SCAN+IDXRBLDBUF_CTL+STS+PAGEALLOC+CHUNK

変数の説明

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

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

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

[図データ]

注※

処理対象表がアーカイブマルチチャンク表の場合に加算してください。

col_num

処理対象表の列数

max_rowsz

最大行長(単位:バイト)

最大行長については「5.8.2(1) 基本行用ページ数(変数BP(i))の求め方」の行長ROWSZの計算式を基に求めてください。

idx_num

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

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

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

計算式(単位:キロバイト)
IOA= sql_size+(scan_buff_size+offset_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_scan_rthd_numの指定値

    マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

SCAN:インデクスレコードファイルの出力処理で必要となるメモリ

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

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

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

  • scan_rthd

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

    マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

  • b-tree_index_num

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

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

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

計算式(単位:キロバイト)
IDXRBLDBUF_CTL=
   ↑(248+BUFBLK)÷1,024↑×scan_rthd
  • BUFBLK

    6.3.4(1)(f) 変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

  • scan_rthd

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

    マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

STS:ステータス情報を退避するメモリ

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

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

[図データ]

idx_num

処理対象のインデクス数

b_tree_idx_num

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

range_idx_num

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

scan_rthd

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

マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

text_idx_num

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

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

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

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

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

    マージチャンクオプションadb_mergechunk_dividx_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるB-treeインデクスの作成スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

CHUNK:チャンク管理ブロック

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

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

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

(b) 変数PROC_IDXの求め方

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

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

[図データ]

変数の説明

KEYSZ

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

5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を基に,インデクスのキー長を求めてください。ただし,可変長のデータについては,実際のデータ長としてください。また,処理対象表に複数のB-treeインデクスが定義されている場合は,定義されたB-treeインデクスの中で最大のキー長を使用してください。

scan_rthd

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

マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

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_dividx_rthd_numの指定値

マージチャンクオプションadb_mergechunk_dividx_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるB-treeインデクスとテキストインデクスの作成スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

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_rthd
    +KEYSZ+(idx_col_num+1)×2+4)÷1,024↑
  • idx_col_num

    B-treeインデクスのインデクス構成列数

  • idx_lv

    B-treeインデクスの段数

    5.8.3 B-treeインデクスごとの格納ページ数の求め方」の,「計算式1(PIDX(k)の求め方)」の漸化式を求めて,PIDX(n)=1となったときのnの値を代入してください。

  • dividx_rthd

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

    マージチャンクオプションadb_mergechunk_dividx_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるB-treeインデクスの作成スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

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

    5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を基に,インデクスのキー長を求めてください。ただし,可変長のデータについては,実際のデータ長としてください。

(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コマンドが中断して削除仕掛中のチャンクが残っている場合,確保されたプロセス共通メモリは解放されません。削除仕掛中のチャンクをすべて削除すると,解放されます。

(f) 変数PROC_DBUPDINFの求め方

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

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

[図データ]

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

[図データ]

変数の説明

DBUPDINF_ENT_NUM

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

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

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

[図データ]

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

[図データ]

index_num

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

chunk_num

マージするチャンク数

(g) 変数PROC_RTHDUPDINFの求め方

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

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

[図データ]

変数の説明

rthd_num

処理リアルスレッド数

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

[図データ]

なお,次に示すマージチャンクオプションに0を指定したり,指定を省略したりした場合は,各マージチャンクオプションに仮定される値を代入してください。

  • マージチャンクオプションadb_mergechunk_scan_rthd_num

  • マージチャンクオプションadb_mergechunk_sort_rthd_num

  • マージチャンクオプションadb_mergechunk_dividx_rthd_num

各マージチャンクオプションについては,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」を参照してください。

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

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

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

[図データ]

変数の説明
注※1

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

注※2

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

注※3

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

(a) 変数IDXRBLDBUFの求め方

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

計算式(単位:キロバイト)
IDXRBLDBUF=
  ↑(RBLD_SQBLK+RBLD_SQIO+RBLD_SQPGE+RBLD_SQHS)÷1,024↑

変数の説明

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

計算式(単位:バイト)

RBLD_SQBLK=
  rbld_blknum×(104+16×↓(RBLD_BLKSZ÷rbld_pagesize)÷64↓)
  • rbld_blknum

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

  • RBLD_BLKSZ

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

    4,096×1,024

  • rbld_pagesize

    マージチャンク対象表およびインデクスが格納されているデータ用DBエリアのページサイズ

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

計算式(単位:バイト)

RBLD_SQIO= 480×rbld_blknum
  • rbld_blknum

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

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

計算式(単位:バイト)

RBLD_SQPGE=
  (176+rbld_pagesize+BUFLOG)×(RBLD_BLKSZ÷rbld_pagesize)×rbld_blknum
  • rbld_pagesize

    マージチャンク対象表およびインデクスが格納されているデータ用DBエリアのページサイズ

  • BUFLOG

    6.3.3(3)(c) 変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

  • RBLD_BLKSZ

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

    4,096×1,024

  • rbld_blknum

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

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

計算式(単位:バイト)

RBLD_SQHS= 8×rbld_blknum+40×rbld_blknum
  • rbld_blknum

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

(b) 変数SORTIOBUFの求め方

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

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

    16を代入してください。

  • sort_rthd

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

    マージチャンクオプションadb_mergechunk_sort_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるソートスレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

(c) 変数SORTBUFの求め方

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

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

変数の説明

sort_rthd

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

マージチャンクオプションadb_mergechunk_sort_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるソートスレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

sort_buff_size

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

注※

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

計算式

[図データ]

変数の説明

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

計算式

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

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

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

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

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

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

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

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

    0

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

計算式

BLK= REC_SIZE+(KEYSZ+8)+56
row_num:

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

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

計算式

KEY_INF= REC_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

(d) 変数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を代入してください。

(e) 変数RTHD_IDXREBUILDの求め方

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

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

[図データ]

変数の説明

idx_num

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

RTHD_IDXREBUILD_MEM(k)

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

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

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

5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方」を基に,インデクスのキー長を求めてください。ただし,可変長のデータについては,実際のデータ長としてください。

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

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

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

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

page_size

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

(f) 変数RTHD_RNGIDXの求め方

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

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

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

  • scan_rthd

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

    マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用される検索処理スレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。

(g) 変数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_SRTHMEM)の所要量は,次に示す計算式から求めてください。

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

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

変数の説明

sort_rthd

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

マージチャンクオプションadb_mergechunk_sort_rthd_numに0を指定した場合,または省略した場合は,この変数には,実際に使用されるソートスレッド数を代入してください。詳細については,マニュアル「HADB コマンドリファレンス」の「adbmergechunk(チャンクのマージ)」の「adbmergechunkコマンドの指定形式」の「マージチャンクオプションの形式」を参照してください。