sql >> Databasteknik >  >> RDS >> Oracle

Min fråga går snabbare andra gången, hur stoppar jag det?

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


  1. Introduktion till PL/SQL-samlingar i Oracle Database

  2. looping med en fråge- och uppslagstabell. mysql och php

  3. Hur SQLite Quote() fungerar

  4. Hur kontrollerar jag SQL-replikeringsstatus via T-SQL?