sql >> Base de Datos >  >> RDS >> Oracle

Mi consulta se ejecuta más rápido la segunda vez, ¿cómo detengo eso?

Es posible borrar los cachés para medir el rendimiento, pero es muy complicado.

Una muy buena medida para rastrear el rendimiento logrado de los esfuerzos de ajuste es contar la cantidad de bloques de lectura durante la ejecución de la consulta. Una de las formas más fáciles de hacer esto es usar sqlplus con autotrace, así:

set autotrace traceonly
<your query>

salidas

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

El número de bloques leídos, ya sea desde el caché o desde el disco, es consistent gets .

Otra forma es ejecutar la consulta con estadísticas aumentadas, es decir, con la sugerencia gather_plan_statistics y luego mirando el plan de consulta desde el caché del cursor:

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

El número de bloques leídos se muestra en la columna 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 |
---------------------------------------------------------------------------------------------------------------------