
latch: cache buffers lru chain - 日本エクセム株式会社 Oracle待機イベント情報
目次[非表示]
- 1.基本情報
- 2.待機パラメータと待機時間
- 3.チェックポイントとソリューション
- 4.豆知識
- 4.1.バッファキャッシュの構造
基本情報
ワーキング・セット(LRU + LRUW)の参照や変更するをプロセスは、必ずそのワーキング・セットを管理しているcache buffers lru chainラッチを獲得しなければなりません。このラッチを獲得する時に競合が発生すると、latch: cache buffers lru chain待機イベントで待機します。
Oracleは、次のような場合にcache buffers lru chainラッチを獲得しなければなりません。
DBWRは、次のような場合に使用済バッファをファイルに記録します。
cache buffers lru chainラッチ競合の最も主な原因は、過度なフリーバッファが必要な場合です。非効率的なSQL文がフリーバッファを過度に必要とする最も典型的なケースですが、同時に複数のセッションが非効率的なSQL文を実行するようになればフリーのバッファに移動する過程や、使用済バッファを記録する過程で、cache buffers lru chain ラッチを獲得するために競合することになります。
cache buffers chainsラッチとcache buffers lru chainラッチの違いを理解する必要があります。同じ表や索引を複数のセッションが同時にスキャンする場合は、cache buffers chainsラッチの競合が発生する可能性が高く、同じチェーンの競合が発生します。しかし、別の表や索引を複数のセッションが同時にスキャンする場合は、cache buffers lruchainラッチの競合が発生する可能性が高くなります。複数のセッションがすべて、他のブロックをメモリに読み込もうとし、フリーバッファを確保する必要が増えた場合、ワーキング・セットの競合が発生しやすくなります。特に、データの変更を頻繁に行ったため使用済バッファの数が多く、DBWRがチェックポイントのためにLRUWリストを参照する回数が多い場合は、cache buffers lru chainラッチの競合はさらに激しくなります。
cache buffers lru chainラッチ競合のもう一つの重要な特徴は、物理的なI/Oを伴うということです。非効率的な索引のスキャンによる、db file sequential read待機とcache buffers lru chainラッチの競合が同時に発生することになります。不要なプール・スキャンの形の表が多い場合は、db file scattered read待機とcache buffers lru chainラッチの競合が同時に発生することになります。実際には、cache buffers chainsラッチの競合とcache buffers lru chainラッチの競合が同時に発生する場合が多いです。バッファキャッシュのサイズがあまりに小さいか、チェックポイントの周期があまりに短い場合でも、cache buffers lru chainラッチの競合が増加します。
待機パラメータと待機時間
待機パラメータ
latch: cache buffers lru chain待機イベントの待機パラメータは以下の通りです。
待機時間
イベントの待機時間は指数増加します。
チェックポイントとソリューション
非効率的なSQL文をチューニングする
非効率的なSQL文をチューニングして論理読み取りを小さくすると、自然にバッファキャッシュへのアクセスが減り、その分cache buffers lru chain latch競合も減少します。
バッファキャッシュのサイズを十分に大きくする
バッファキャッシュサイズが小さすぎる場合、フリーバッファを割り当てるための作業が非常に頻繁に発生し、この過程でcache buffers lru chain latch競合が増加します。
チェックポイントパラメータの見直し
チェックポイントの周期があまりに短い場合は、DBWRが盛んに使用済バッファを記録するようになり、この過程でcache buffers lru chain latchの競合が発生します。この場合には、チェックポイントのサイクルを適切に調整しなければなりません。 FAST_START_MTTR_TARGETパラメータを使用すると、チェックポイントの周期を調整することができます。
豆知識
バッファキャッシュの構造
latch: cache buffers chains#バッファキャッシュの構造を参照してください。