パフォーマンスを測定するためにキャッシュをクリアすることは可能ですが、非常に扱いにくいです。
チューニング作業の達成されたパフォーマンスを追跡するための非常に優れた手段は、クエリ実行中の読み取りブロックの数をカウントすることです。これを行う最も簡単な方法の1つは、次のようにautotraceでsqlplusを使用することです。
set autotrace traceonly
<your query>
出力
...
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1 consistent gets
0 physical reads
0 redo size
363 bytes sent via SQL*Net to client
364 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
キャッシュからでもディスクからでも、読み取られるブロックの数はconsistent gets
です。 。
もう1つの方法は、統計を増やして、つまりヒントgather_plan_statistics
を使用してクエリを実行することです。 次に、カーソルキャッシュからクエリプランを確認します。
auto autotrace off
set serveroutput off
<your query with hint gather_plan_statistics>
select * from table(dbms_xplan.display_cursor(null,null,'typical allstats'));
読み取られたブロック数は、列buffers
に出力されます。 。
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 3 | | 1 (100)| | 3 |00:00:00.01 | 3 |
| 1 | SORT AGGREGATE | | 3 | 1 | | | 3 |00:00:00.01 | 3 |
| 2 | INDEX FULL SCAN| ABCDEF | 3 | 176 | 1 (0)| 00:00:01 | 528 |00:00:00.01 | 3 |
---------------------------------------------------------------------------------------------------------------------