Oracle
 sql >> база данни >  >> RDS >> Oracle

Заявката ми се изпълнява по-бързо втори път, как да спра това?

Изчистването на кеш паметта за измерване на производителността е възможно, но много тромаво.

Много добра мярка за проследяване на постигнатото представяне на усилията за настройка е преброяването на броя на прочетените блокове по време на изпълнение на заявка. Един от най-лесните начини да направите това е да използвате sqlplus с autotrace, така:

set autotrace traceonly
<your query>

изходи

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

Броят на прочетените блокове, независимо дали е от кеша или от диска, е consistent gets .

Друг начин е да стартирате заявката с увеличени статистики, т.е. с подсказката gather_plan_statistics и след това разглеждане на плана на заявката от кеша на курсора:

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

Броят на прочетените блокове се извежда в колона 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql - алтернатива на WITH ... AS

  2. Колко индекса на базата данни са твърде много?

  3. Проблеми с NLS_CHARACTERSET WE8ISO8859P1 и UTF8 в Oracle

  4. Вмъкнете ефективно голямо количество данни с SQL

  5. Oracle:Ако таблица съществува