Att rensa cachen för att mäta prestanda är möjligt men mycket ohanterligt.
Ett mycket bra mått för att spåra uppnådda prestanda för inställningsinsatser är att räkna antalet läsblock under exekveringen av en fråga. Ett av de enklaste sätten att göra detta är att använda sqlplus med autotrace, som så:
set autotrace traceonly
<your query>
utgångar
...
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
Antalet block som läses, vare sig det är från cache eller från disk, är consistent gets
.
Ett annat sätt är att köra frågan med ökad statistik, dvs med tipset gather_plan_statistics
och tittar sedan på frågeplanen från markörcachen:
auto autotrace off
set serveroutput off
<your query with hint gather_plan_statistics>
select * from table(dbms_xplan.display_cursor(null,null,'typical allstats'));
Antalet lästa block matas ut i kolumnen 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 |
---------------------------------------------------------------------------------------------------------------------