日本エクセムホームに戻る

 

MaxGauge(マックスゲージ) Oracleのセッション、SQLの履歴を明細で記録するツール。自由な分析で効率化!! マックスゲージ製品情報はこちら

ツイートする

latch:cache buffers lru chain

1.概要

ワーキング・セット(LRU + LRUW)の参照や変更するをプロセスは、必ずそのワーキング・セットを管理しているcache buffers lru chainラッチを獲得しなければなりません。このラッチを獲得する時に競合が発生すると、latch:cache buffers lru chain 待機イベントで待機します。

Oracleは、次のような場合にcache buffers lru chainラッチを獲得しなければなりません。

1)フリーバッファの割り当てするためにLRUリストを参照する場合
2)DBWRが使用済バッファをファイルに記録するために、LRUWリストを参照して、そのバッファをLRUリストに移動する場合

DBWRは、次のような場合に使用済バッファをファイルに記録します。


cache buffers lru chainラッチ競合の最も主な原因は、過度なフリーバッファが必要な場合です。非効率的なSQL文がフリーバッファを過度に必要とする最も典型的なケースですが、同時に複数のセッションが非効率的なSQL文を実行するようになればフリーのバッファに移動する過程や、使用済バッファを記録する過程で、cache buffers lru chain ラッチを獲得するために競合することになります。

cache buffers chainsラッチとcache buffers lru chainラッチの違いを理解する必要があります。
同じ表や索引を複数のセッションが同時にスキャンする場合は、cache buffers chainsラッチの競合が発生する可能性が高く、同じチェーンの競合が発生します。
しかし、別の表や索引を複数のセッションが同時にスキャンする場合は、cache buffers lru chainラッチの競合が発生する可能性が高くなります。
複数のセッションがすべて、他のブロックをメモリに読み込もうとし、フリーバッファを確保する必要が増えた場合、ワーキング・セットの競合が発生しやすくなります。
特に、データの変更を頻繁に行ったため使用済バッファの数が多く、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ラッチの競合が増加します。