ページの先頭行へ戻る
Symfoware Server V12.2.0 RDB運用ガイド
FUJITSU Software

B.1 バッファ枯渇を発生させないための見積もり

次の順に見積もりを行います。

(1) 応用プログラム多重度

当該バッファプールを同時に使用する応用プログラムの多重度を求めます。

応用プログラム多重度はすべてのコネクションに関して並列度を合計したものになります。ただし、合計した値が16未満の場合には、16とします。

ここで求まった値を“A”とします。

【並列度】
並列スキャンを利用していない場合
並列度 =  1
並列スキャンを利用している場合
MAX_PARALLELを設定している場合
並列度 =  MIN( 表のDSIのうち対象のバッファを利用するものの数, MAX_PARALLEL )
MAX_PARALLELを設定していない場合、かつ、RDBCPUNUMを設定していない場合
並列度 =  MIN( 表のDSIのうち対象のバッファを利用するものの数, CPUの全コア数×2 )
MAX_PARALLELを設定していない場合、かつ、RDBCPUNUMを設定している場合
並列度 =  MIN( 表のDSIのうち対象のバッファを利用するものの数, RDBCPUNUM×2)
【応用プログラム多重度( = A )】
A = MAX( 16, 応用プログラム多重度 = コネクション1の並列度 + コネクション2の並列度 + ・・・・ )

(2) 全コネクションの使用バッファ枚数の合計

当該バッファプールと結合されている表の全件検索や並列スキャンを行っていないコネクションに関しては、コネクション毎の使用バッファ枚数は4として見積もります。

また、(1)で合計した値が16未満のため16にしていた場合には、増やした多重度の分も使用バッファ枚数は4として見積もります。

当該バッファプールと結合されている表の全件検索や並列スキャンを行っている場合には、次の式で見積もります。

【コネクション毎の使用バッファ枚数】
表の全件検索を行わない場合
並列スキャンを行わない場合
コネクション毎の使用バッファ枚数 = 4 
表の全件検索を行う場合
並列スキャンを行わない場合
コネクション毎の使用バッファ枚数 = 512K / ページ長
並列スキャンを行う場合
コネクション毎の使用バッファ枚数 = 512K / ページ長 × 並列度

並列度は、上記(1)で求めた並列度になります。


例えば、並列度が2で、ページ長が8KBの表に対して表の全件検索を行っているコネクションの場合には、コネクション毎の使用バッファ枚数は512K / 8K × 2 = 128 となります。

当該バッファプールを同時に使用するコネクションすべてに関して、使用バッファ枚数の合計を算出します。

ここで求まった値を“B”とします。

【応用プログラムの使用バッファ枚数の合計( = B )】
B = 応用プログラムの使用バッファ枚数の合計
  =  コネクション1の使用バッファ枚数 + コネクション2の使用バッファ枚数 + ・・・・

(3) 見積もり

上で求めた値をもとに、計算します。

【バッファ数】
バッファ数 = Max(A×2, B)
【危険率】
危険率 = 1 - A/バッファ数
【安全率】
安全率 = 1 - (A×2)/バッファ数

算出例

《算出例1》
条件

バッファプールのページ長

8KB

表の全件検索も並列スキャンもしないコネクション数

100

算出式
A = MAX( 16, 1+1+・・・ +1 )
  = MAX( 16, 1×100 )
  = MAX( 16, 100 ) = 100
B = 4+4+ ・・・・ +4
  = 4 × 100
  = 400
算出結果

バッファ数 = Max(A×2,B) = Max(200,400) = 400

危険率 = 1 - A/バッファ数 = 1 - 100/400 = 0.75 = 75%

安全率 = 1 - (A×2)/バッファ数 = 1 - 200/400 = 0.5 = 50%

《算出例2》
条件

バッファプールのページ長

16KB

表の全件検索も並列スキャンもしないコネクション数

75

表の全件検索を並列スキャンで行うコネクション数

5 (並列度5)

算出式
A = MAX( 16, 1+1+ ・・・ +1 + 5+5+・・・・+5 )
  = MAX( 16, 1×75 + 5×5)
  = MAX( 16, 100 )
  = 100
B = 4+4+ ・・・ +4 + (512/16)×5 + (512/16)×5 + ・・・・ + (512/16)×5
  = 4×75 + (512/16)×5×5
  = 300 + 800
  = 1100
算出結果

バッファ数 = Max(A×2,B) = Max(200,1100) = 1100

危険率 = 1 - A/バッファ数 = 1 - 100/1100 = 0.91 = 91%

安全率 = 1 - (A×2)/バッファ数 = 1 - 200/1100 = 0.82 = 82%