データベースバッファキャッシュとは

ここでは、ORACLEデータベースのメモリ領域SGAの中にある、デーベースバッファキャッシュについて紹介します。

データベースバッファキャッシュには、大きく2つの役割があります。1つは、DISKから読み込んだデータ・ブロックをキャッシュしておき、データ読み込みの効率を向上させるための役割です。2つ目は、更新済みデータを溜めて置く、バッファとしての役割です。

キャッシュとしての役割

一度問合せのあったデータをメモリ領域に保持しておきます。次回問合せがあった場合に、メモリ領域に存在するデータを戻すことで、データファイル・DISKへのアクセスを減らし、データ読み込みの速度を向上されることが出来ます。

しかし、データベースバッファキャッシュのサイズは無限にある訳ではなく、限りがあります。よって、LRUの考えで、最後に読み込まれてから一番時間が経過したデータから順に、バッファキャッシュから追い出されていきます。

頻繁に読み込まれるデータやマスタ系のデータを半永久的にキャッシュに保持しておくようなテクニックもあります。「繰り返し実行するマスタ系の参照SQLをチューニングする方法」でもう少し詳しく紹介していますので参考にしてください。

バッファとしての役割

更新されたデータは、即時データファイルやDISKに書き込まれる訳ではありません。一旦、データベースバッファキャッシュに保持されます。そして、チェックポイントが発行されたタイミングで、まとめてDBライタープロセスによってデータファイルに書き込まれます。これにより、データファイル・DISKへの書き込み回数を減らし、データ更新の速度向上を図っています。

ただし、大量のデータINSERTをする場合などには、バッファキャッシュに書き込むことが逆にパフォーマンスや性能のボトルネックとなることがあります。そういった場合には、「INSERT文のSQLチューニング方法」を参考にしてチューニングを試みてください。

データベースバッファキャッシュとは” に対して1件のコメントがあります。

この投稿はコメントできません。