14.1.4 シングルサーバが使用する共用メモリの計算式
シングルサーバが使用する共用メモリの計算式を次に示します。
- 32ビットモードの場合(単位:キロバイト)
-
計算式1+↑{(↑(40+(計算式2〜計算式7,計算式9を加算した値)+(6.5×1024×1024))÷512↑×512)}÷1024↑
- 64ビットモードの場合(単位:キロバイト)
-
計算式1+↑{(↑(72+(計算式2〜計算式9を加算した値)+(6.5×1024×1024))÷512↑×512)}÷1024↑
- 計算式1〜10についての注意事項
-
-
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です。
上記以外の場合,計算式7を加算します。
-
pd_inner_replica_controlオペランドを指定する場合に計算式5を加算します。
-
pd_dfw_awt_processオペランドを指定する場合に計算式6を加算します。
-
pd_sds_shmpool_sizeオペランドを省略すると,次の値が設定されます。
32ビットモードの場合:
↑{(↑(40+(計算式2〜計算式7,計算式9,10の合計値))÷512↑×512)}÷1024↑
64ビットモードの場合:
↑{(↑(72+(計算式2〜計算式9,10の合計値))÷512↑×512)}÷1024↑
-
pd_max_resident_rdarea_noオペランドを指定する場合に計算式8を加算します。
-
pd_max_temporary_object_noの値が1以上の場合に計算式9を加算します。
-
pd_max_tmp_table_rdarea_noの値が1以上の場合に計算式10 を加算します。
-
計算式1〜10を次に示します。
計算式の種類 |
共用メモリの計算式 |
---|---|
計算式1 (単位:キロバイト) |
●32ビットモードの場合 b×1.3+c+d+f+1.6+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 +1024 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+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 +1024 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)+(↑436×g÷16↑×16)+48※1×g+496×h +112×(p+240) +96×x+32×j+132×{19+(e+3)×3} +48×n+48×{(e+3)×2+1+MAX(5,(e+3)÷10)} +68×B+152×(A+120)+80+32×g+64※2+96※3+368※4 +((↓(↑(g÷8)↑+3)÷4↓)×4)×j ●64ビットモードの場合 500×1024 +9416×(e+15)+(↑536×g÷16↑×16) +(↑56※1×g÷16↑×16)+512×h +(↑136×(p+240)÷16↑×16) +144×x+48×j+240×{19+(e+3)×3} +64×n+96×{(e+3)×2+1+MAX(5,(e+3)÷10)} +68×B+184×(A+120)+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)×10+16 ●64ビットモードの場合 (48+32×x)×10+16 |
計算式8 (単位:バイト) |
16+112+(48+48×G)+(48+32×H) |
計算式9 (単位:バイト) |
16+80×I |
計算式10 (単位:バイト) |
↑(112+(28+J×52))÷8↑×8 |
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オペランドの値
- j:インデクス用のグローバルバッファプール数
-
pd_dbbuff_modifyオペランドにYを指定している場合,pdbufferコマンドの指定数に,pd_max_add_dbbuff_noオペランドの値を加算して計算します。
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オペランドで指定した共用メモリのサイズ
G:pd_max_resident_rdarea_noオペランドの値
H:pd_max_resident_rdarea_shm_noオペランドの値
I:pd_max_temporary_object_noオペランドの値
J:pd_max_tmp_table_rdarea_noオペランドの値
T:空き領域の再利用機能を使用する表数
- 注※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')