OracleDatabaseのデータアクセスの最小単位はブロックです。行ではありません。
各ブロックは多くの行を格納できます。
データベースは、現在のモードまたは一貫性のあるモードでブロックにアクセスできます。
- 現在=ブロックが「今」存在するため。
- 一貫性=クエリの開始時にブロックが存在していたため。
クエリ列と現在の列は、データベースが一貫性のある(クエリ)モードと現在のモードでブロックにアクセスした回数を報告します。
ブロックにアクセスするとき、それはすでにバッファキャッシュ(メモリ)にある可能性があります。その場合、ディスクアクセスは必要ありません。そうでない場合は、物理読み取り(pr)を実行する必要があります。ディスク列は、物理的な読み取りの合計数です。
計画の各行の統計は、その操作の数値です。さらに、そのすべての子操作の合計。
簡単に言うと、データベースは最初に最初の子にアクセスすることでプランを処理します。次に、行を親に渡します。次に、その親の他のすべての子操作を順番に実行します。子操作は、ディスプレイで親からインデントされます。
したがって、データベースはクエリを次のように処理しました:
- CUSTOMERから2,000行を読み取ります。これには、749個の一貫したブロック取得と363個のディスク読み取り(この行のcr値とpr値)が必要でした。これには10,100マイクロ秒かかりました。
- BOOKINGから112,458行を読み取ります。これにより、8,203回の一貫した読み取りとゼロディスク読み取りが行われました。これには337,595マイクロ秒かかりました
- ハッシュ結合を使用して、これら2つのテーブルを結合しました。 CR、PR、PW(物理書き込み)および時間の値は、これより下の操作の合計です。さらに、この操作が行ったすべての作業。したがって、ハッシュ結合:
- は8,952-(749 + 8,203)=ゼロの一貫した読み取り
- 363-(363 + 0)=ゼロの物理読み取り
- 実行に1,363,447-(10,100 + 337,595)=1,015,752マイクロ秒かかりました
ハッシュ結合のCRとPRの合計が、フェッチ行のクエリとディスクの合計と一致していることに注意してください。
カウント列は、操作が発生した回数を報告します。フェッチは、行を取得するためのデータベースの呼び出しです。したがって、クライアントはデータベースを7,499回呼び出しました。 ceil(112,458 / 7,499)=15行を受信するたび。
CPUは、サーバーのプロセッサがそのステップを実行していた秒単位の合計時間です。経過時間は総実時間です。これは、CPU時間+余分な作業です。ディスク読み取り、ネットワーク時間など。