Het wissen van de caches om de prestaties te meten is mogelijk, maar erg onpraktisch.
Een zeer goede maatstaf voor het bijhouden van de bereikte prestaties van afstemmingsinspanningen is het tellen van het aantal leesblokken tijdens het uitvoeren van de query. Een van de gemakkelijkste manieren om dit te doen, is door sqlplus met autotrace te gebruiken, zoals:
set autotrace traceonly
<your query>
uitgangen
...
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
Het aantal gelezen blokken, of het nu uit de cache of van schijf is, is consistent gets
.
Een andere manier is om de query uit te voeren met verhoogde statistieken, d.w.z. met de hint gather_plan_statistics
en kijk dan naar het queryplan vanuit de cursorcache:
auto autotrace off
set serveroutput off
<your query with hint gather_plan_statistics>
select * from table(dbms_xplan.display_cursor(null,null,'typical allstats'));
Het aantal gelezen blokken wordt weergegeven in kolom 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 |
---------------------------------------------------------------------------------------------------------------------