Hitachi

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


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

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

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

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

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

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

〈この項の構成〉

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

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

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

PROC_IDXRBLDSZ=
   Σ(PROC_MNGPROC_IDX※1PROC_IDXREBUILD※1PROC_RNGIDX※2PROC_DBUPDINF※3PROC_RTHDUPDINFPROC_OBJDELENT※4PROC_IDXEST※6※5
変数の説明
注※1

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

注※2

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

注※3

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

注※4

クラウドストレージ機能を使用する場合に加算してください。

注※5

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

注※6

次のどちらかの条件に該当する場合に加算します。

  • インデクス再作成オプションadb_idxrebuild_dvbix_rthd_useVARIABLEを指定してadbidxrebuildコマンドを実行する場合

  • サーバ定義のadb_cmd_dvbix_rthd_useオペランドにVARIABLEを指定し,インデクス再作成オプションadb_idxrebuild_dvbix_rthd_useの指定を省略してadbidxrebuildコマンドを実行する場合

(a) 変数PROC_MNGの求め方

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

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

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

変数の説明

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

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

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

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

計算式(単位:キロバイト)
IOA= 1,056+(scan_buff_sizeoffset_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_rthd_numの指定値-1)÷2↓
SCANインデクスレコードファイルの出力処理で必要となるメモリ

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

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

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

  • scan_rthd

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

    ↓(インデクス再作成オプションadb_idxrebuild_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_idxrebuild_rthd_numの指定値-1)÷2↓
text_idx_num

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

imp_sts

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

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

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

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

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

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

    インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1
PROC_AUDINFSZ

6.3.3 HADBサーバ開始時のメモリ所要量の求め方」の「(3) プロセス共通メモリの所要量の求め方(HADBサーバ開始時)」の「(t) 変数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_idxrebuild_rthd_numの指定値-1)÷2↓
rd_buff_size

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

ld_buff_size

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

dividx_rthd

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

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1
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_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_DBUPDINFの求め方

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

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

[図データ]

変数の説明

DBUPDINF_ENT_NUM

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

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

計算式(単位:個数)

[図データ]

idx_num

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

rngidx_num

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

txtidx_num

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

chunk_num

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

(f) 変数PROC_RTHDUPDINFの求め方

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

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

[図データ]

変数の説明

rthd_num

処理リアルスレッド数

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

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

(g) 変数PROC_OBJDELENTの求め方

変数PROC_OBJDELENTは,次に示す値を代入してください。

値(単位:キロバイト)
PROC_OBJDELENT=4,106

(h) 変数PROC_IDXESTの求め方

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

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

PROC_IDXEST=↑{4,120+8×RTHNUM+(8×idx_num+Σ(ESTINF)+4,096)×scan_rthd}÷1,024↑

変数の説明

RTHNUM:総リアルスレッド数

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

idx_num

処理対象表に定義するB-treeインデクスの数

Σ(ESTINF)

adbidxrebuildコマンドで再作成するB-treeインデクスごとにESTINFを次に示す計算式から求めて,求めた値を合計してください。

計算式(単位:バイト)

ESTINF=56+8×MIN(65,535 ,ESTENT_NUM)+48×ESTENT_NUM
ESTENT_NUM

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

ESTENT_NUM=
      MAX{256 ,
           ↓MAX{1 ,↓(↓(page_size×(100-pctfree))÷100↓-80)÷(KEYSZDB+22)↓}
             ×↓2,097,152÷page_size↓÷scan_rthd↓×2
           }
page_size

B-treeインデクスを格納するデータ用DBエリアのページサイズ(単位:バイト)

pctfree

CREATE INDEX文のPCTFREEオペランドに指定する未使用領域の比率(単位:%)

未使用領域の比率を指定しない場合は,30%と仮定して計算してください。

KEYSZDB

データベース格納キー長(単位:バイト)

5.8.3 B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1) 下位ページ用のセグメントで使用する格納ページ数(変数IP_LOWER(i))の求め方」の変数KEYSZDBを参照してください。ただし,可変長のデータは,常にキー長を定義長として求めてください。

scan_rthd

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

↓(インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1)÷2↓

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

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

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

[図データ]

変数の説明
注※1

処理対象インデクスがレンジインデクスだけの場合は,0として計算してください。

注※2

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

注※3

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

注※4

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

(a) 変数IDXRBLDBUFの求め方

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

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

IDXRBLDBUF=↑(RBLD_SQBUF※1RBLD_COBUF※2)÷1,024↑
※1

クラウドストレージ機能を使用しない場合に加算してください。

※2

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

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

計算式(単位:バイト)

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

計算式(単位:バイト)

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

計算式(単位:バイト)

RBLD_SQIO= 568×rbld_blknum
  • rbld_blknum

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

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

計算式(単位:バイト)

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

計算式(単位:バイト)

RBLD_SQHS= 48×rbld_blknum
  • rbld_blknum

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

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

計算式(単位:バイト)

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

計算式(単位:バイト)

RBLD_COBLKrbld_blknum×72
  • rbld_blknum

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

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

計算式(単位:バイト)

RBLD_COIO=136×rbld_blknum
  • rbld_blknum

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

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

計算式(単位:バイト)

RBLD_COPGE
     =((176+BUFLOG)×SEGSIZERBLD_COBLKSZ)×rbld_blknum
RBLD_COHS:次に示す計算式から求めてください。

計算式(単位:バイト)

RBLD_COHS=40×rbld_blknum
  • rbld_blknum

    インデクス再作成オプションadb_idxrebuild_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_idxrebuild_rthd_numの指定値-1

(d) 変数SORTBUFの求め方

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

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

変数の説明

sort_rthd

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

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1
sort_buff_size

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

  • そのほかの場合

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

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

[図データ]

変数の説明

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

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

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

KEYSZ

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

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

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

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

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

(g) 変数RTHD_RNGIDXの求め方

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

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

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

  • scan_rthd

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

    ↓(インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1)÷2↓

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

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

変数の説明

sort_rthd

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

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値-1
注※

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