UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

Oracle8 Turning 〜データベースバッファキャッシュの検討〜


Oracle8 Tuning

〜データベースバッファキャッシュの検討〜


0.更新履歴

  • 2001.01.22 新規作成

1.データベースバッファキャッシュの検討

 データベースバッファキャッシュとは,次の様なものをメモリ上にキャッシングするために用いられる.

  • 索引
  • クラスタ
  • ロールバックセグメント

 この容量を大きくすることでディスクI/Oを減らすことが可能となるので,パフォーマンス向上が期待できる.
 しかし,データベースバッファキャッシュのが実メモリーの大きさをオーバーした場合はページングが発生するため逆にパフォーマンスがダウンする.

 データベースバッファ・キャッシュの容量はDB_BLOCK_SIZEDB_BLOCK_BUFFERSのふたつのパラメータで設定できる.

パラメータ名 説明
DB_BLOCK_SIZE
 データブロックのサイズを設定している.OSに依存するが,Solarisの場合だと2048Byteがデフォルトとなっている.
 この値はデータベースの作成時に設定され,それ以降は変更できない.
 トランザクションデータが極端に小さい,大きい場合以外は特にパフォーマンスに影響を与えることはないといわれている.
DB_BLOCK_BUFFERS
 データベースキャッシュバッファのバッファ数を指定する. デフォルトは200個となっている.

 つまり,データベースバッファキャッシュのサイズは,次の式で計算できる.

 

DB_BLOCK_SIZE × DB_BLOCK_BUFFERS

 データベースバッファキャッシュのサイズは大きいほうがパフォーマンスが良くなるが,キャッシュヒット率が高い場合には,それ以上のサイズを設定しても効果を得られなくなる.

5.1.データベースバッファキャッシュヒット率の算出

 キャッシュヒット率が小さい場合は,キャッシュ容量が不足していると考えられる.

 データベースバッファキャッシュのヒット率は,システム統計の中にある項目から計算できる.

システム統計
 Statistic                   Total        Per Transact Per Logon    Per Second  
--------------------------- ------------ ------------ ------------ ------------
CPU used by this session           22578       149.52       5644.5         4.13
CPU used when call started         22578       149.52       5644.5         4.13
CR blocks created                   2005        13.28       501.25          .37
DBWR buffers scanned               33394       221.15       8348.5         6.11

〜略〜

commit cleanouts successful        15467       102.43      3866.75         2.83
consistent changes                  2408        15.95          602          .44
consistent gets                   602544      3990.36       150636       110.32
cursor authentications                57          .38        14.25          .01
data blocks consistent read         2011        13.32       502.75          .37
db block changes                 1110248      7352.64       277562       203.27
db block gets                     702959      4655.36    175739.75        128.7

〜略〜

physical reads                    317056      2099.71        79264        58.05
physical reads direct              82280        544.9        20570        15.06
physical writes                   373775      2475.33     93443.75        68.43

〜略〜

user calls                         33506       221.89       8376.5         6.13
user commits                         151            1        37.75          .03
write clones created in bac           96          .64           24          .02
write clones created in for          114          .75         28.5          .02

 上記システム統計の中の,次の項目が必要となる.

 
項目 説明
consistent gets
 SQL文の実行によってアクセスされたバッファ・キャッシュ中のブロック数.
 for update句のないselect文でアクセスしたブロック数.
db block gets
 SQL文の実行によってアクセスされたバッファ・キャッシュ中のブロック数.
 insert,update,delete,for update句のあるselect文でアクセスしたブロック数
physical reads
 物理的なI/Oを発生させるリクエスト数

 システム統計から,それぞれの項目のTotalを用いて,次の様な計算式でキャッシュヒット率を算出できる. 

データベースバッファキャッシュヒット率の式
ヒット率 = 1 - ( "consistent gets" ÷ ( "db block gets" + "physical reads") )

 これを前出のレポートから引用して当てはめると,

1 - (317056 / (602544 + 702959 ) = 0.24286118070965750365950901683106

となるので,ヒット率は24%となる.

 ヒット率が90%以下の場合は,DB_BLOCK_BUFFERSの値を大きくする.



広告スペース
Google