Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


14.1.2 メモリ所要量の計算式

HiRDB/シングルサーバが使用するメモリ所要量は,次の表に示すすべての項目を加算した値です。

なお,OSのオペレーティングシステムパラメタのshmmaxの指定値については,「OSのオペレーティングシステムパラメタの見積もり」を参照してください。

共用メモリサイズが増加すると,ページフォルトの発生回数が増加し,トランザクション性能に影響を与えるおそれがあります。各オペランドの指定値の目安を参照し,システムに合わせて適切な値を指定することを検討してください。

表14‒2 HiRDB/シングルサーバが使用するメモリ所要量

項目

メモリ所要量(単位:キロバイト)

プロセス固有領域

ユニットコントローラ全プロセスが使用するプロセス固有領域

●32ビットモードの場合

E+↑{(64+48×(u+1))×(pd_max_server_processの値−b−6)+(64+48×(y+1))×3+w+R}÷1024↑

●64ビットモードの場合

E+↑{(64+64×(u+1))×(pd_max_server_processの値−b−6)+(64+64×(y+1))×3+w}÷1024↑+R

●プラグインを使用する場合,加算します。

+1400

●pd_max_ard_processオペランドが1以上の場合,加算します。

+r

●リアルタイムSANレプリケーションを使用する場合,加算します。

+↑425×(2×b+7)÷1024↑

●pd_process_terminatorオペランドにfixedを指定した場合,加算します。

+F×(pd_process_terminator_maxの値−1)

●インメモリデータ処理を行う場合,加算します。

+↑{K×(pd_max_usersの値×2+7)}÷1024↑

●通信トレース格納最大数を変更する場合,加算します。

+↑M÷1024↑

シングルサーバプロセスが使用するプロセス固有領域※1

pd_work_buff_mode=

each指定時

●32ビットモードの場合

{G+g+(a+9)×c+h+i+m+p+q+s}×(b+3)+↑(64+48×(v+1))÷1024↑×(b+3)+J

●64ビットモードの場合

{G+g+(a+9)×c+h+i+m+p+q+s}×(b+3)+↑(64+64×(v+1))÷1024↑×(b+3)+J

●インメモリデータ処理を行う場合,加算します。

+↑{K×(b+3)}÷1024↑

●通信トレース格納最大数を変更する場合,加算します。

+↑P÷1024↑

pd_work_buff_mode=

pool指定又は省略時

●32ビットモードの場合

(G+g+a+↑a÷128×0.1↑+11+h+i+m+n+p+q+s)×(b+3)+↑(64+48×(v+1))÷1024↑×(b+3)+J

●64ビットモードの場合

(G+g+a+↑a÷128×0.1↑+15+h+i+m+n+p+q+s)×(b+3)+↑(64+64×(v+1))÷1024↑×(b+3)+J

●インメモリデータ処理を行う場合,加算します。

+↑{K×(b+3)}÷1024↑

●通信トレース格納最大数を変更する場合,加算します。

+↑P÷1024↑

pd_work_buff_mode=pool2指定

●32ビットモードの場合

(G+g+↑a÷128×0.1↑+11+h+i+m+n+p+q+s)×(b+3)+↑(64+48×(v+1))÷1024↑×(b+3)+J+(a×S)

●64ビットモードの場合

(G+g+↑a÷128×0.1↑+15+h+i+m+n+p+q+s)×(b+3)+↑(64+64×(v+1))÷1024↑×(b+3)+J+(a×S)

●インメモリデータ処理を行う場合,加算します。

+↑{K×(b+3)}÷1024↑

●通信トレース格納最大数を変更する場合,加算します。

+↑P÷1024↑

共用メモリ

ユニットコントローラ用共用メモリ中,ユニットコントローラが使用する領域

↑d÷1024↑

ユニットコントローラ用共用メモリ中,シングルサーバが使用する領域

e

グローバルバッファ用共用メモリ

f

インメモリデータ処理用共用メモリ

L

ユティリティ用共用メモリ

t

セキュリティ監査情報用バッファ用共用メモリ

●システムによる自動計算の場合

↑0.3+MAX{(H+100),(H×1.2)}×0.25↑

●ユーザ指定値(pd_audit_def_buffer_sizeオペランドを指定)にする場合

pd_audit_def_buffer_sizeの指定値

プロセス間メモリ通信用共用メモリ※2

j×k

注※1

プラグインを使用する場合は,1シングルサーバプロセス当たり300を加算してください。

注※2

クライアント環境定義でPDIPC=MEMORYを指定した場合に加算します。プロセス間メモリ通信機能及びクライアント環境定義については,マニュアル「HiRDB UAP開発ガイド」を参照してください。

なお,HiRDBサーバ又はHiRDBクライアントのどちらかが32ビットモードの場合,プロセス間メモリ通信機能で使用する共用メモリは32ビット空間内に確保されます。

a:pd_work_buff_sizeオペランドの値

b:pd_max_usersオペランドの値+pd_max_reflect_process_countオペランドの値

c:最大作業表数

SQL文ごとの作業表数を表「SQL文ごとの作業表数の求め方」から求めます。表「SQL文ごとの作業表数の求め方」から求めた作業表数のうちで最大のものを最大作業表数とします。

d:「ユニットコントローラが使用する共用メモリの計算式」で求めた値

e:「シングルサーバが使用する共用メモリの計算式」で求めた値

f:「グローバルバッファが使用する共用メモリの計算式」で求めた値

g:SQL実行時に必要なメモリ所要量

計算式については,「SQL実行時に必要なメモリ所要量の計算式」を参照してください。

h:SQL前処理時に必要なメモリ所要量

計算式については,「SQL前処理時に必要なメモリ所要量の計算式」を参照してください。

i:LOBバッファ一括入出力ワークメモリ

グローバルバッファ定義にLOB用グローバルバッファを指定している場合だけ(システム共通定義のpdbufferオペランドに-bを指定している場合),62キロバイトを加算してください。

j:プロセス間メモリ通信機能を使用するクライアントの最大同時実行数

分からない場合は,プロセス間メモリ通信機能を使用する全クライアント数,又はpd_max_usersオペランドの値を代入してください。

k:プロセス間メモリ通信機能を使用する全クライアントのデータ送受信用メモリサイズ(クライアント環境定義のPDSENDMEMSIZEの値+PDRECVMEMSIZEの値)の平均値

m:Java仮想マシンが使用するメモリ所要量

Javaストアドプロシジャ又はJavaストアドファンクションを使用する場合に,Java仮想マシンが使用するメモリ所要量を加算します。Java仮想マシンが使用するメモリ所要量は,Java仮想マシンのオプション(Hewlett-Packard JRE 1.2.2.04の場合は-Xms,-Xmx,-Xmnオプション)やJava仮想マシンのバージョンによって異なります。Java仮想マシンが使用するメモリ所要量については,Java仮想マシンのマニュアルを参照してください。HP-UX版の場合のメモリ所要量の目安を次に示します。

  • Java仮想マシンの起動で8メガバイトの加算が必要です。

  • Java仮想マシンのメモリ最大値(-Xmxオプションの指定値)を加算します。ただし,Java仮想マシンによっては,-Xmxオプション以上のメモリを使用することがあります。

n:作業表用増分メモリサイズ

pd_work_buff_expand_limitオペランドを指定する場合に作業表用増分メモリサイズを加算します。作業表用増分メモリサイズは次に示す計算式から求めます。

作業表用増分メモリサイズ(キロバイト)=作業表用増分バッファサイズ+↑(作業表用の増分バッファサイズ÷128)×0.1↑

  • 作業表用増分バッファサイズ(キロバイト)=MAX(0,ハッシュジョイン,副問合せのハッシュ実行による作業表用増分バッファサイズ)+MAX(0,作業表数の増加による作業表用増分バッファサイズ)

  • ハッシュジョイン,副問合せのハッシュ実行による作業表用増分バッファサイズ=MIN{(ハッシュジョイン,副問合せのハッシュ実行をするときの作業表用バッファサイズ−pd_work_buff_sizeオペランドの値),(pd_work_buff_expand_limitオペランドの値−pd_work_buff_sizeオペランドの値)}×ハッシュジョイン,副問合せのハッシュ実行をする同時実行ユーザ数

    ハッシュジョイン,副問合せのハッシュ実行をするときの作業表用バッファサイズの求め方については,マニュアル「HiRDB UAP開発ガイド」を参照してください。

  • 作業表数の増加による作業表用増分バッファサイズ=MIN{(使用作業表数×128−pd_work_buff_sizeオペランドの値),(pd_work_buff_expand_limitオペランドの値−pd_work_buff_sizeオペランドの値)}×(使用作業表数がpd_work_buff_sizeオペランドの値÷128以上になるユーザ数)

    使用作業表数=MAX(1SQL文が使用する作業表用ファイルの数,ASSIGN LIST文が使用する作業表用ファイルの数)

    1SQL文が使用する作業表用ファイルの数,及びASSIGN LIST文が使用する作業表用ファイルの数の求め方については,「最大ファイル数の見積もり(pdfmkfs -lコマンド)」を参照してください。

p:BLOB型データ用に必要なメモリ所要量

計算式については,「BLOB型データの検索又は更新時に必要なメモリ所要量の計算式(HiRDB/シングルサーバの場合)」を参照してください。

q:サーバ側でブロック転送又は配列FETCHで必要なメモリ所要量

計算式については,「ブロック転送又は配列FETCHで必要なメモリ所要量の計算式」を参照してください。

r:非同期READ用メモリサイズ

pd_max_ard_processオペランドが1以上の場合に加算します。次に示す計算式から求めます(単位:キロバイト)。

(90+
90
Σ RDエリア用HiRDBファイルシステム領域管理用メモリ)
i=1
×pd_max_ard_processの値

RDエリア用HiRDBファイルシステム領域管理用メモリは計算値の大きい順に90領域を計算に使用します。サーバで使用する領域数が90領域に満たない場合,その領域まで計算します。

HiRDBファイルシステム領域管理用メモリはそれぞれの領域の初期設定時のパラメタを使用して,次の計算式から求めます(単位:キロバイト)。

なお,領域の初期設定時のパラメタはpdfstatfsコマンドに-Aオプションを指定して実行することで確認できます。

{(ファイル数※1+増分数※2)÷64}×1.5※3

注※1 pdfmkfs -l指定値,又はpdfstatfs実行結果の[available file count]に表示される値です。

注※2 pdfmkfs -e指定値,又はpdfstatfs実行結果の[available expand count]に表示される値です。

注※3 領域サイズ(pdfmkfs -n指定値)が2048以上の場合に乗算します。

s:HiRDBファイルシステム用メモリサイズ

次に示す計算式から求めます(単位:キロバイト)。

604+作業表用HiRDBファイルシステム領域管理用メモリ+
システムログ用HiRDBファイルシステム領域管理用メモリ+
90
ΣRDエリア用HiRDBファイルシステム領域管理用メモリ
i=1

作業表用及びシステムログ用HiRDBファイルシステム領域管理用メモリは,サーバで使用するHiRDBファイルシステム領域で計算値が最大になるものを使用します。RDエリアの場合は計算値の大きい順に90領域を計算に使用します。サーバで使用する領域数が90領域に満たない場合,その領域まで計算します。

HiRDBファイルシステム領域管理用メモリはそれぞれの領域の初期設定時のパラメタを使用して,次の計算式から求めます(単位:キロバイト)。

なお,領域の初期設定時のパラメタはpdfstatfsコマンドに-Aオプションを指定して実行することで確認できます。

{(ファイル数※1+増分数※2)÷64}×1.5※3

注※1 pdfmkfs -l指定値,又はpdfstatfs実行結果の[available file count]に表示される値です。

注※2 pdfmkfs -e指定値,又はpdfstatfs実行結果の[available expand count]に表示される値です。

注※3 領域サイズ(pdfmkfs -n指定値)が2048以上の場合に乗算します。

t:pd_utl_exec_modeの値が0の場合:0

pd_utl_exec_modeの値が1の場合:↑{(b×2000+136)÷1024}↑×1024

u:ユニット制御情報定義として有効なpd_module_trace_maxの値

v:シングルサーバ定義として有効なpd_module_trace_maxの値

w:HiRDBの再開始用メモリサイズ

このメモリサイズを確保できないと,HiRDBの再開始に失敗します。次の計算式から求めます(単位:バイト)。

A+B
 
●pd_dbsync_pointオペランドにcommitを指定している場合,加算します。
+112×((pd_max_usersの値+pd_max_reflect_process_countの値)×2+7)
●pd_inner_replica_controlオペランドに1以上を指定している場合,加算します。
+C
●キャラクタ型スペシャルファイル上に作成されたRDエリアを格納したHiRDBファイルシステム領域数が1001以上の場合に加算します。
+D
y:システム共通定義,又はユニット制御情報定義にpd_module_trace_maxオペランドを指定している場合:pd_module_trace_maxの値

それ以外:16383

HiRDBの再開始用メモリサイズを求める計算に使用する変数を次に示します。

変数

●32ビットモードの場合

246762+4×pd_max_rdarea_noの値

+{48×(pd_max_rdarea_noの値+表数)+304}×((pd_max_usersの値+pd_max_reflect_process_countの値)×2+7)

●64ビットモードの場合

305274+8×pd_max_rdarea_noの値

+{64×(pd_max_rdarea_noの値+表数)+512}×((pd_max_usersの値+pd_max_reflect_process_countの値)×2+7)

表数:62+MAX{pd_max_access_tablesの値,500}

b1×X+b2×Y

b1:サーバ用ステータスファイルのレコード長<4096の場合

   MAX((↓(3400÷((↓((レコード長−40)−308)÷20↓)

   +(↓(レコード長−40)÷20↓)×(MAX(↓4096÷レコード長↓,2)−1))

   +0.7)↓),1)×MAX(↓4096÷レコード長↓,2)×(レコード長−40)

  4096≦サーバ用ステータスファイルのレコード長<12288の場合

   MAX(↓(3400÷(↓(((レコード長−40)−308)÷20)↓)+0.7)↓,1)

   ×(レコード長−40)

  12288≦サーバ用ステータスファイルのレコード長の場合

   MAX(↓(3400÷(↓(((レコード長−40)−836)÷20)↓)+0.7)↓,1)

   ×(レコード長−40)

X:RDエリア数≦3400の場合:1

  3401≦RDエリア数≦6800の場合:2

  6801≦RDエリア数の場合:3

b2:サーバ用ステータスファイルのレコード長<4096の場合

   (↓(5662310÷((↓((レコード長−40)−308)÷20↓)

   +(↓(レコード長−40)÷20↓)×(MAX(↓4096÷レコード長↓,2)−1))

   +0.7)↓)×MAX(↓4096÷レコード長↓,2)×(レコード長−40)

  4096≦サーバ用ステータスファイルのレコード長<12288の場合

   ↓(5662310÷(↓(((レコード長−40)−308)÷20)↓)+0.7)↓

   ×(レコード長−40)

  12288≦サーバ用ステータスファイルのレコード長の場合

   ↓(5662310÷(↓(((レコード長−40)−836)÷20)↓)+0.7)↓

   ×(レコード長−40)

Y:RDエリア数≦10200の場合:0

  10201≦RDエリア数≦5672510の場合:1

  5672511≦RDエリア数≦11334820の場合:2

  11334821≦RDエリア数の場合:3

C

●32ビットモードの場合

(48×pd_max_rdarea_noの値+80)×((pd_max_usersの値+pd_max_reflect_process_countの値)×2+7)

●64ビットモードの場合

(64×pd_max_rdarea_noの値+160)×((pd_max_usersの値+pd_max_reflect_process_countの値)×2+7)

D

●32ビットモードの場合

12012×(↑(キャラクタ型スペシャルファイル上に作成されたRDエリアを格納したHiRDBファイルシステム領域数−1000)÷1000↑)

●64ビットモードの場合

16016×(↑(キャラクタ型スペシャルファイル上に作成されたRDエリアを格納したHiRDBファイルシステム領域数−1000)÷1000↑)

E,F,G:固定値

この値はOSによって異なります。OSごとの値を次に示します(単位:キロバイト)。

OS

Eの値

Fの値

Gの値

HP-UX

242,220

2,800

7,700

AIX

156,900

6,000

12,200

Linux

123,700

1,900

5,800

H:余裕を持って見積もる場合は監査対象イベントの数(CREATE AUDITの実行回数),詳細に見積もる場合はセキュリティ監査情報用バッファのエントリ数

J:シンクポイント出力同期制御情報取得機能使用時に必要なメモリ(単位:バイト)

pd_dbbuff_trace_levelオペランドに1を指定し,かつpd_dfw_awt_processオペランドの指定を省略している場合に,次の値を加算します。

32ビットモードの場合:

320×シングルサーバに定義したグローバルバッファの数

64ビットモードの場合:

640×シングルサーバに定義したグローバルバッファの数

K:pd_max_resident_rdarea_noオペランドに1以上を指定している場合に,次の値を加算します。

1648+16×pd_max_resident_rdarea_noの値+16×pd_max_resident_rdarea_shm_noの値

L:インメモリデータ処理で必要なメモリ所要量

計算式については,「インメモリデータ処理で必要なメモリ所要量」を参照してください。

M:通信トレース処理で必要なメモリ所要量
32ビットモードの場合:

(16×(N−1024)×2)×(pd_max_server_processの値−pd_max_usersの値−3)

64ビットモードの場合:

(32×(N−1024)×2)×(pd_max_server_processの値−pd_max_usersの値−3)

N:ユニット制御情報定義として有効なpd_pth_trace_maxの値

オペランドの指定値を2のべき乗に切り上げた値になります。

P:通信トレース処理で必要なメモリ所要量
32ビットモードの場合:

(16×(Q−1024)×2)×(pd_max_usersの値+3)

64ビットモードの場合:

(32×(Q−1024)×2)×(pd_max_usersの値+3)

Q:シングルサーバ定義として有効なpd_pth_trace_maxの値

オペランドの指定値を2のべき乗に切り上げた値になります。

R:シグナルハンドラ用メモリサイズ

HP-UX (IPF)版の場合:512

それ以外の場合:0

S:作業表を使用する操作(SQL及びユティリティ)を行うトランザクションの同時実行数

表14‒3 SQL文ごとの作業表数の求め方

SQL文

作業表数の求め方

SELECT文

INSERT文(問合せ指定の場合)

1.〜8. の指定がない場合:0

1.〜8. の指定がある場合:該当する作業表数をすべて加算した値

  1. 複数の表を結合して検索する場合

    増加作業表数=(結合表数−1)×2+1

  2. ORDER BY句を指定する場合

    増加作業表数=2

  3. GROUP BY句を指定する場合

    増加作業表数=GROUP BY句指定数

  4. DISTINCT句を指定する場合

    増加作業表数=DISTINCT句指定数

  5. UNION句,UNION ALL句又はEXCEPT[ALL]句を指定する場合

    増加作業表数=(UNION又はUNION ALL句指定数)×2+1

  6. 探索条件中にインデクスを定義した列がある場合

    増加作業表数=探索条件中のインデクスを定義した列数

  7. FOR UPDATE句又はFOR READ ONLY句を指定する場合

    増加作業表数=1

  8. 副問合せ(限定述語)を指定する場合

    増加作業表数=副問合せ指定数

UPDATE文

DELETE文

探索条件中のインデクスを定義した列数+1

DROP SCHEMA文

DROP TABLE文

DROP INDEX文

CREATE INDEX文

REVOKE文でアクセス権限を取り消す場合

2