Hitachi

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


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

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

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

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

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

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

〈この項の構成〉

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

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

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

[図データ]

変数の説明
注※1

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

注※2

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

注※3

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

注※4

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

(a) 変数PROC_MNGの求め方

変数PROC_MNGは,インデクス再作成の管理で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

変数の説明

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

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

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

[図データ]

注※

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

col_num

処理対象表のカラム数

max_rowsz

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

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

idx_num

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

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

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

計算式(単位:キロバイト)
IOA= 1,056+(scan_buff_size+offset_area×2)×scan_rthd
  • scan_buff_size

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

    インデクス再作成オプションadb_idxrebuild_scan_buff_sizeの指定値×1,024

  • offset_area

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

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

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

  • scan_rthd

    インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

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

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

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

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

    インデクス再作成オプションadb_idxrebuild_dvix_wtbuff_sizeの指定値

  • scan_rthd

    インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

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

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

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

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

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

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

[図データ]

idx_num

処理対象のインデクス数

b_tree_idx_num

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

range_idx_num

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

scan_rthd

インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

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

text_idx_num

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

imp_sts

adbimportコマンドのステータス情報を退避するメモリ

adbimportコマンドが中断したあとで,--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行する場合に,「6.3.6(1)(a) 変数PROC_IMPTの求め方」にある変数STSで求めた値を加算してください。

PAGEALLOC:インデクス再作成用ページ割り当て制御情報

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

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

    インデクス再作成オプションadb_idxrebuild_dividx_rthd_numの指定値

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

(b) 変数PROC_IDXの求め方

変数PROC_IDXは,インデクス一括作成で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

[図データ]

変数の説明

KEYSZ

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

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

scan_rthd

インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

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

rd_buff_size

インデクス再作成オプションadb_idxrebuild_dvix_rdbuff_sizeの指定値

ld_buff_size

インデクス再作成オプションadb_idxrebuild_dvix_wtbuff_sizeの指定値

dividx_rthd

インデクス再作成オプションadb_ idxrebuild_dividx_rthd_numの指定値

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

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

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

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

b_tree_idx_num

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

text_idx_num

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

(c) 変数PROC_IDXREBUILDの求め方

変数PROC_IDXREBUILDは,B-treeインデクスの再作成で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

[図データ]

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

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

  • 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_DBUPDINFの求め方

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

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

[図データ]

変数の説明

DBUPDINF_ENT_NUM

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

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

計算式(単位:個数)

[図データ]

idx_num

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

rngidx_num

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

txtidx_num

再作成対象のテキストインデクス数

chunk_num

再作成対象のインデクスを定義している表のチャンク数

(f) 変数PROC_RTHDUPDINFの求め方

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

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

[図データ]

変数の説明

rthd_num

処理リアルスレッド数

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

[図データ]

なお,次に示すインデクス再作成オプションに0を指定したり,指定を省略したりした場合は,各インデクス再作成オプションに仮定される値を代入してください。

  • インデクス再作成オプションadb_idxrebuild_scan_rthd_num

  • インデクス再作成オプションadb_idxrebuild_sort_rthd_num

  • インデクス再作成オプションadb_idxrebuild_dividx_rthd_num

各インデクス再作成オプションについては,マニュアル「HADB コマンドリファレンス」の「adbidxrebuild(インデクスの再作成)」を参照してください。

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

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

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

[図データ]

変数の説明
注※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_idxrebuild_buff_blk_numの指定値

  • rbld_pagesize

    インデクス再作成対象のインデクスが格納されているDBエリアのページサイズ

  • RBLD_BLKSZ

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

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

計算式(単位:バイト)

RBLD_SQIO= 480×rbld_blknum
  • rbld_blknum

    インデクス再作成オプションadb_idxrebuild_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,194,304を代入してください。

  • rbld_blknum

    インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

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

計算式(単位:バイト)

RBLD_SQHS= 8×rbld_blknum+40×rbld_blknum
  • rbld_blknum

    インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

(b) 変数SORTIOBUFの求め方

変数SORTIOBUFは,ソート処理で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

    16を代入してください。

  • sort_rthd

    インデクス再作成オプションadb_idxrebuild_sort_rthd_numの指定値

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

(c) 変数SORTBUFの求め方

変数SORTBUFは,インデクス再作成時のソート処理で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

変数の説明

sort_rthd

インデクス再作成オプションadb_idxrebuild_sort_rthd_numの指定値

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

sort_buff_size

インデクス再作成オプションadb_idxrebuild_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

  • そのほかの場合

    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は,B-treeインデクス再作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

[図データ]

変数の説明

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↑
page_size

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

KEYSZ

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

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

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

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

(f) 変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは,レンジインデクス一括更新時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

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

  • scan_rthd

    インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

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

(g) 変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは,テキストインデクス一括更新時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

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

[図データ]

変数の説明

idx_num

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

RTHD_TXTIDXBUILD_MEM(k)

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

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

[図データ]

buff_blk_size

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

buff_blk_num

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

idx_div_num

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

txt_sort_buff_size

インデクス再作成オプションadb_idxrebuild_txt_buff_sizeの指定値

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

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

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

変数の説明

sort_rthd

インデクス再作成オプションadb_idxrebuild_sort_rthd_numの指定値

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

注※

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