2016-12-08 5 views
0

oracle db 40Mバイトのキャッシュメモリ。私はデータベースの唯一のユーザーです。どのようにクエリを実行して、キャッシュヒット率を計算するかを理解したいクエリ。Oracleのプランと計算キャッシュヒット率を説明してください

のは、我々はこのクエリを持っているとしましょう:

SELECT column1, count(*) 
FROM table1 
GROUP BY column1 
ORDER BY column1 desc 

table1は40Mサイズより小さいと仮定すると、今の計画を説明言う:(?I/O)1330のコストを持ってい

TABLE ACESS(FULL)を、 SORT(GROUP BY)は1340であり、SELECT STATEMENTは1340である。

私は何かを理解できません。SORTSELECT STATEMENTはそれぞれ1340 I/Oですか?

テーブルacessを実行するときにテーブルサイズよりも大きなキャッシュがあるので、ディスクの内容をキャッシュにロードしてからソートして選択するときは、キャッシュの内容を取得するだけで済みます。私の心はソートと選択のためのI/Oがゼロでなければなりません。

また、そのクエリのキャッシュヒット率を計算するにはどうすればよいですか?

+0

実行計画を掲載できますか? –

答えて

1

コストは、その時間がかかる単一ブロック読み取りの等価数で表される操作の予想時間です。

だから、1つのブロックの読み取りが0.5msのをとるために、システム上の100msの操作は、彼らが累積されますので、1340年の選択のための1340のためを含んようにあなたが音を記述する200

数字のコストを持っているでしょうテーブルアクセスのために1330を含むグループバイヤー。したがって、コスト別のグループ10.

クエリのキャッシュヒット率は、クエリが実行される前にそのテーブルがSGAにどれだけ含まれているかに依存します。いずれのテーブルも存在しない場合、BCHRは0% 。そのすべてがあれば、BCHRは100%になります。

システムチューニングツールとして、高いBCHRと効率的なクエリプランの相関が非常に低いため、BCHRは広く推奨されていません。実際には、クエリプランの効率を大幅に低下させることでBCHRを上げることができます。

+0

ありがとうございます。ソートと選択カウントはブロック読み込みではありませんか?だから、キャッシュのヒット率は66,6%になるか、ソートや選択はオンザフライで行われるので、I/Oとしてカウントされませんか? – user2241915

+0

実際には、ソートが大きすぎてメモリ(PGA、SGAでない)で実行できない場合、それはディスクに流出しますが、それに関係するI/OはBCHRに寄与しません(BCHRがシステム効率の優れた測定値)。 –

関連する問題