2011-07-31 3 views
6

のは、2つの例をやってみましょう: 全表スキャンがこの結果につながる:Oracle待機イベント:dbファイルの分散/順次読み取りは何を解釈しますか?

       TOTAL TIME 
EVENT       WAITS WAITED 
------------------------------ ----- ------ 
db file scattered read   460  13 

これは、非選択的な索引レンジ・スキャンによるアクセスの結果である:

       TOTAL TIME 
EVENT       WAITS WAITED 
------------------------------ ----- ------ 
db file scattered read   15  3 
db file sequential read   6209 140 

私は期待したいと思いますunselectiveインデックスから多くのrowidを取った後に分散読み取り。また、最適化されたI/Oシステム上のすべてのテーブルを読み取るためのシーケンシャルリード。

このデータの読み方を教えていただけますか?

答えて

5

これらの2つの待機イベントの名前は、むしろ混乱します。どちらもI/Oボトルネックを示しています。db file scattered readは、通常、マルチブロック読み取り(全テーブルスキャン)に由来しますが、db file sequential readは一般にインデックス付き読み取りを意味するシングルブロック読み取りに由来します。

なぜオラクルのエンジニアがこれらのイベントを誤解を招くような名前にしたのかについては、さまざまな理論があります。インデックスのルックアップを、続い:私は心からインデックス付きの読み取りは、少なくとも論理読み取りされ、データを解釈するようWhy Have Scattered Thoughts About Oracle Reads?


、対象のエリックEmrickのエッセイを読むことをお勧めしますテーブルによって示されるテーブル行のルックアップ。移行された行などのものは、読み込み回数を増加させる可能性があります。したがって、索引を使用して多数の行を読み取ることは、コストのかかる操作です。一方、フル・テーブル・スキャンでは、マルチ・ブロック読取りを使用して行をホーバーすることができます。これは、単一の論理読取りのために多くの行を引き出します。このため、通常、表の合計行の比較的小さなパーセンテージでも、全表スキャンを使用する方が効率的です。

+1

+1興味深い情報のリンク – DCookie

関連する問題