スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

16.1.4 シングルサーバが使用する共用メモリ計算式

シングルサーバが使用する共用メモリの計算式を次に示します。

32ビットモードの場合(単位:キロバイト)
計算式1+↑{(↑(40+(計算式2〜計算式8を加算した値))÷512↑×512)}÷1024↑

64ビットモードの場合(単位:キロバイト)
計算式1+↑{(↑(72+(計算式2〜計算式8を加算した値))÷512↑×512)}÷1024↑

計算式1〜8についての注意事項
  • pd_rdarea_open_attribute_use又はpd_lv_mirror_useオペランドにYを指定する場合に計算式3を加算します。
  • pd_dbsync_point又はpd_system_dbsync_pointオペランドのどちらかの指定がcommitの場合に計算式4を加算します。pd_system_dbsync_pointオペランドの省略値はcommitです。
  • pd_inner_replica_controlオペランドを指定する場合に計算式5を加算します。
  • pd_dfw_awt_processオペランドを指定する場合に計算式6を加算します。
  • pd_sds_shmpool_sizeオペランドを省略すると,次の値が設定されます。
    32ビットモードの場合:
    ↑{(↑(40+(計算式2〜計算式8の合計値))÷512↑×512)}÷1024↑
    64ビットモードの場合:
    ↑{(↑(72+(計算式2〜計算式8の合計値))÷512↑×512)}÷1024↑
  • pd_max_commit_write_reclaim_noオペランドを省略した場合(ただし,pd_sysdef_default_optionオペランドに”v6compatible”又は”v7compatible”を指定した場合は除きます),又はpd_max_commit_write_reclaim_noオペランドに0以外を指定した場合に計算式8を加算します。ただし,計算式4を加算している場合には加算する必要はありません。
  • pd_max_resident_rdarea_noオペランドを指定する場合に計算式8を加算します。

計算式1〜8を次に示します。

計算式の種類 共用メモリの計算式
計算式1
(単位:キロバイト)
●32ビットモードの場合
b×1.3+c+d+f+1.6×m+q+r+4
+{[(a+12)÷13]×1.1+[(a+62)÷63]+3.7}×(e+3)+3.5
+{
  ↑(↑(b÷64)↑)×(8÷16)↑×4×4
  +12×{(b÷3)+1−mod(b÷3, 2)}
  +8×a×{(e+3)×2+1+MAX(e÷10,5)}+32+20000
  +↑{(c÷8)+7}÷64↑×8+↑{(f÷8)+7}÷64↑×8
  +MAX{a×(e+3),c÷8}×104+MAX{a×(e+3),f÷8}×24
  +↑{(q÷4)+7}÷64↑×8
  +↑{[(r−(s×592+t×916+u×172))÷2]+7}÷64↑×8
  +MAX{13×(e+3),q÷4}×88
  +MAX{21×(e+3),[r−(s×592+t×916+u×172)]÷2}×60
  +44+256+1024+512※1
 }÷1024+y+7.5
+↑{248×v×w+47×v+72}÷1024↑
+↑{↑(28+(↑(32+((↑g÷127↑+1)×2048+128))÷32↑×32))
  ÷128↑×128
  }÷1024↑
 D
+Σ(Ei)
 i=1
pd_def_buf_control_area_assignオペランドにINITIALを指定するか,又はこのオペランドを省略した場合に加算します。
+{[(a+12)÷13]×1.1+[(a+62)÷63]+3.7}×(e+7)
●64ビットモードの場合
b×1.3+c+d+f+1.6×m+q+r+5
+{[(a+12)÷13]×1.2+[(a+62)÷63]×1.5+4.1}
×(e+3)+3.5
+{
  ↑(↑(b÷64)↑)×(8÷16)↑×4×4+12
  ×{(b÷3)+1−mod(b÷3, 2)}
  +8×a×{(e+3)×2+1+MAX(e÷10,5)}+48+20000
  +↑{(c÷8)+7}÷64↑×8+↑{(f÷8)+7}÷64↑×8
  +MAX{a×(e+3),c÷8}×104+MAX{a×(e+3),f÷8}×40
  +↑{(q÷4)+7}÷64↑×8
  +↑{[(r−(s×600+t×936+u×184))÷2]+7}÷64↑×8
  +MAX{13×(e+3),q÷4}×104
  +MAX{21×(e+3),[r−(s×600+t×936+u×184)]÷2}×72
  +72+256+1536+512※1
 }÷1024+y+7.5
+↑{248×v×w+64×v+72}÷1024↑
+↑{↑(56+(↑(56+((↑g÷127↑+1)×2048+128))÷32↑×32))
  ÷128↑×128
  }÷1024
 D
+Σ(Ei)
 i=1
pd_def_buf_control_area_assignオペランドにINITIALを指定するか,又はこのオペランドを省略した場合に加算します。
+{[(a+12)÷13]×1.2+[(a+62)÷63]×1.5+4.1}×(e+7)
計算式2
(単位:バイト)
●32ビットモードの場合
500×1024
  +5072×(e+15)+(↑372×g÷16↑×16)+48※1×g+328×h
  +112×(p+240)※6
  +96×x+32×j+132×{19+(e+3)×3}
  +48×n+48×{(e+3)×2+1+MAX(5,(e+3)÷10)}
  +68×B+144×A+80+32×g+64※2+96※3+368※4
  +((↓(↑(g÷8)↑+3)÷4↓)×4)×j
●64ビットモードの場合
500×1024
  +9416×(e+15)+(↑472×g÷16↑×16)
  +(↑56※1×g÷16↑×16)+344×h
  +(↑136×(p+240)÷16↑×16)※7
  +144×x+48×j+240×{19+(e+3)×3}
  +64×n+96×{(e+3)×2+1+MAX(5,(e+3)÷10)}
  +68×B+160×A+96+48×g+64※2+128※3+448※4
  +((↓(↑(g÷8)↑+7)÷8↓)×8)×j
計算式3
(単位:バイト)
●32ビットモードの場合
{[(↑↑g÷8↑÷4↑)×4]+8}×{(e+3)×2+12}
●64ビットモードの場合
{[(↑↑g÷8↑÷8↑)×8]+8}×{(e+3)×2+12}
計算式4
(単位:バイト)
●32ビットモードの場合
(32+16×x)×(e×2+7+1)+16
●64ビットモードの場合
(48+32×x)×(e×2+7+1)+16
計算式5
(単位:バイト)
56×z+16
計算式6
(単位:バイト)
●32ビットモードの場合
72+52×C+68×x
pd_dbbuff_trace_levelオペランドに1を指定する場合に加算します。
+320×x
●64ビットモードの場合
96+56×C+72×x
pd_dbbuff_trace_levelオペランドに1を指定する場合に加算します。
+640×x
計算式7
(単位:バイト)
●32ビットモードの場合
(32+16×x)×F+16
●64ビットモードの場合
(48+32×x)×F+16
計算式8
(単位:バイト)
16+112+(48+48×G)+(48+32×H)

a:pd_max_access_tablesオペランドの値

b:pd_sql_object_cache_sizeオペランドの値

c:pd_table_def_cache_sizeオペランドの値

d:pd_auth_cache_sizeオペランドの値

e:pd_max_usersオペランドの値

f:pd_view_def_cache_sizeオペランドの値

g:pd_max_rdarea_noオペランドの値

h:pd_max_file_noオペランドの値

i:サーバ内のインデクス総数
ただし,分割キーインデクスの場合はサーバ内の分割数になります。

j:インデクス用のグローバルバッファプール数
pd_dbbuff_modifyオペランドにYを指定している場合,pdbufferコマンドの指定数に,pd_max_add_dbbuff_noオペランドの値を加算して計算します。

m:pd_alias_cache_sizeオペランドの値

n:pd_lck_until_disconnect_cntオペランドの値

p:pd_assurance_index_noオペランドの値

q:pd_type_def_cache_sizeオペランドの値

r:pd_routine_def_cache_sizeオペランドの値

s:インストールしたプラグインの数

t:DMLで使用するプラグイン関数の総数 ※5

u:DMLで使用するプラグイン関数のパラメタ総数 ※5

v:pd_max_list_usersオペランドの値

w:pd_max_list_countオペランドの値

x:総グローバルバッファ数(pdbufferオペランドの指定数)
pd_dbbuff_modifyオペランドにYを指定している場合,pdbufferコマンドの指定数に,pd_max_add_dbbuff_noオペランドの値を加算して計算します。

y:pd_registry_cache_sizeオペランドの値

z:pd_inner_replica_controlオペランドの値

A:pd_assurance_table_noオペランドの値

B:サーバ内の最大トランザクション数(2×e+7)

C:pd_dfw_awt_processオペランドの値

D:指定したpdplgprmオペランドの総数

Ei:i番目のpdplgprmオペランドで指定した共用メモリのサイズ

F:pd_max_commit_write_reclaim_noオペランドの値

G:pd_max_resident_rdarea_noオペランドの値

H:pd_max_resident_rdarea_shm_noオペランドの値

注※1
pd_max_list_users及びpd_max_list_countオペランドの両方とも0でない場合に加算します。

注※2
pd_max_ard_processオペランドに1以上を指定した場合に加算します。

注※3
pd_max_reflect_process_countオペランドに1以上を指定した場合に加算します。

注※4
再編成時期予測機能を使用する場合に加算します。

注※5
DMLで使用するプラグイン関数の総数及びDMLで使用するプラグイン関数のパラメタの総数は,次に示すSQLで求められます。
SELECT COUNT(*),SUM(N_PARAM) FROM MASTER.SQL_PLUGIN_ROUTINES
WHERE PLUGIN_NAME = 'プラグイン名称'
AND (TIMING_DESCRIPTOR = 'ADT_FUNCTION'
    OR TIMING_DESCRIPTOR IS NULL
    OR TIMING_DESCRIPTOR = 'BEFORE_INSERT'
    OR TIMING_DESCRIPTOR = 'AFTER_INSERT'
    OR TIMING_DESCRIPTOR = 'BEFORE_UPDATE'
    OR TIMING_DESCRIPTOR = 'AFTER_UPDATE'
    OR TIMING_DESCRIPTOR = 'BEFORE_DELETE'
    OR TIMING_DESCRIPTOR = 'AFTER_DELETE'
    OR TIMING_DESCRIPTOR = 'BEFORE_PURGE_TABLE'
    OR TIMING_DESCRIPTOR = 'AFTER_PURGE_TABLE'
    OR TIMING_DESCRIPTOR = 'INDEX_SEARCH'
    OR TIMING_DESCRIPTOR = 'INDEX_COUNT'
    OR TIMING_DESCRIPTOR = 'INDEX_INSERT'
    OR TIMING_DESCRIPTOR = 'INDEX_BEFORE_UPDATE'
    OR TIMING_DESCRIPTOR = 'INDEX_AFTER_UPDATE'
    OR TIMING_DESCRIPTOR = 'INDEX_DELETE'
    OR TIMING_DESCRIPTOR = 'PURGE_INDEX'
    OR TIMING_DESCRIPTOR = 'INDEX_MAINTENANCE_DEFERRED'
    OR TIMING_DESCRIPTOR = 'BEFORE_INSERT_DC'
    OR TIMING_DESCRIPTOR = 'BEFORE_UPDATE_DC'
    OR TIMING_DESCRIPTOR = 'BEFORE_DATA_CHECK'
    OR TIMING_DESCRIPTOR = 'AFTER_DATA_CHECK')

注※6
pd_sysdef_default_optionオペランドに”v6compatible”又は”v7compatible”を指定した場合,112×(p+240)の替わりに112×MAX(p,i×1.2)で計算してください。

注※7
pd_sysdef_default_optionオペランドに”v6compatible”又は”v7compatible”を指定した場合,(↑136×(p+240)÷16↑×16)の替わりに(↑136×MAX(p,(i×1.2))÷16↑×16)で計算してください。