Xóa bộ nhớ đệm để đo hiệu suất là có thể nhưng rất khó sử dụng.
Một biện pháp rất tốt để theo dõi hiệu suất đạt được của các nỗ lực điều chỉnh là đếm số khối đã đọc trong quá trình thực thi truy vấn. Một trong những cách dễ nhất để làm điều này là sử dụng sqlplus với tính năng tự động dò tìm, như sau:
set autotrace traceonly
<your query>
kết quả đầu ra
...
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
Số khối được đọc, có thể là từ bộ nhớ cache hoặc từ đĩa, là consistent gets
.
Một cách khác là chạy truy vấn với số liệu thống kê tăng lên, tức là với gợi ý gather_plan_statistics
và sau đó xem xét kế hoạch truy vấn từ bộ đệm con trỏ:
auto autotrace off
set serveroutput off
<your query with hint gather_plan_statistics>
select * from table(dbms_xplan.display_cursor(null,null,'typical allstats'));
Số khối được đọc được xuất ra trong cột 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 |
---------------------------------------------------------------------------------------------------------------------