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

Обяснете болната точка за планиране на разходите

По-рано днес работех с разработчик по заявка, която имаше лоша производителност. Тази заявка беше голяма и сложна и първоначално изглеждаше като плашещо усилие да се разбере къде се крие проблемът с производителността. С Explain Plan понякога можем да използваме разходите, за да помогнем да стесним болната точка на производителността на голяма, сложна заявка.

Разглеждайки план за обяснение на тази заявка, можем да видим, че общата му цена е доста висока.

Когато разгледаме детайлите, можем да видим, че ПЪЛНОТО сканиране на таблицата (FTS) в таблицата DETAIL_RECORD има висока цена от 51018. Забележете как високата цена на FTS разпространява плана. Всички операции над този FTS имат висока цена поради високата цена на този достъп до единична маса. Достъпът до таблицата CIMS_POLICIES_TO_PROCESS има относително ниска цена, но операцията HASH JOIN получава високата си цена само поради високата цена за достъп до таблицата DETAIL_RECORD.

Общата цена е само малко повече от цената за достъп до тази таблица. Ясно е, че FTS в тази таблица има най-голям принос за болезнената точка на тази заявка, която се анализира.

Разглеждайки разходите на Explain Plan по този начин, ние успяхме много бързо да се съсредоточим върху една област на много сложна заявка, която причинява най-голяма болка при производителността. Без анализа на разходите, направен тук, определянето коя част от заявката по-долу причинява проблем би било много работа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да получа броя на записите, засегнати от съхранена процедура?

  2. Изберете произволна извадка от резултати от резултат от заявка

  3. Пресъздайте лош RAC възел

  4. Динамична опорна точка в oracle sql - Процедура

  5. Как да форматирате отрицателни числа с ъглови скоби в Oracle