次の順に見積もりを行います。
(1) 応用プログラム多重度
当該バッファプールを同時に使用する応用プログラムの多重度を求めます。
応用プログラム多重度はすべてのコネクションに関して並列度を合計したものになります。ただし、合計した値が16未満の場合には、16とします。
ここで求まった値を“A”とします。
並列度 = 1
並列度 = MIN( 表のDSIのうち対象のバッファを利用するものの数, MAX_PARALLEL )
並列度 = MIN( 表のDSIのうち対象のバッファを利用するものの数, CPUの全コア数×2 )
並列度 = MIN( 表のDSIのうち対象のバッファを利用するものの数, RDBCPUNUM×2)
A = MAX( 16, 応用プログラム多重度 = コネクション1の並列度 + コネクション2の並列度 + ・・・・ )
(2) 全コネクションの使用バッファ枚数の合計
当該バッファプールと結合されている表の全件検索や並列スキャンを行っていないコネクションに関しては、コネクション毎の使用バッファ枚数は4として見積もります。
また、(1)で合計した値が16未満のため16にしていた場合には、増やした多重度の分も使用バッファ枚数は4として見積もります。
当該バッファプールと結合されている表の全件検索や並列スキャンを行っている場合には、次の式で見積もります。
コネクション毎の使用バッファ枚数 = 4
コネクション毎の使用バッファ枚数 = 512K / ページ長
コネクション毎の使用バッファ枚数 = 512K / ページ長 × 並列度
並列度は、上記(1)で求めた並列度になります。
例えば、並列度が2で、ページ長が8KBの表に対して表の全件検索を行っているコネクションの場合には、コネクション毎の使用バッファ枚数は512K / 8K × 2 = 128 となります。
当該バッファプールを同時に使用するコネクションすべてに関して、使用バッファ枚数の合計を算出します。
ここで求まった値を“B”とします。
B = 応用プログラムの使用バッファ枚数の合計 = コネクション1の使用バッファ枚数 + コネクション2の使用バッファ枚数 + ・・・・
(3) 見積もり
上で求めた値をもとに、計算します。
バッファ数 = Max(A×2, B)
危険率 = 1 - A/バッファ数
安全率 = 1 - (A×2)/バッファ数
算出例
バッファプールのページ長 | 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% |
バッファプールのページ長 | 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% |