Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Meine Abfrage läuft beim zweiten Mal schneller, wie kann ich das stoppen?

Das Löschen der Caches zur Leistungsmessung ist möglich, aber sehr umständlich.

Ein sehr gutes Maß zur Nachverfolgung der erreichten Leistung von Tuning-Bemühungen ist das Zählen der Anzahl der Leseblöcke während der Abfrageausführung. Eine der einfachsten Möglichkeiten, dies zu tun, ist die Verwendung von sqlplus mit Autotrace, etwa so:

set autotrace traceonly
<your query>

Ausgänge

...
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

Die Anzahl der gelesenen Blöcke, sei es aus dem Cache oder von der Festplatte, ist consistent gets .

Eine andere Möglichkeit besteht darin, die Abfrage mit erhöhten Statistiken auszuführen, z. B. mit dem Hinweis gather_plan_statistics und dann den Abfrageplan aus dem Cursor-Cache betrachten:

auto autotrace off
set serveroutput off
<your query with hint gather_plan_statistics>
select * from table(dbms_xplan.display_cursor(null,null,'typical allstats'));

Die Anzahl der gelesenen Blöcke wird in der Spalte buffers ausgegeben .

---------------------------------------------------------------------------------------------------------------------
| 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 |
---------------------------------------------------------------------------------------------------------------------