sql >> Databáze >  >> RDS >> Oracle

Vysvětlete Plán Cost Pain Point

Dříve jsem dnes pracoval s vývojářem na dotazu, který měl špatný výkon. Tento dotaz byl rozsáhlý a složitý a zpočátku to vypadalo jako skličující úsilí zjistit, kde leží problém s výkonem. S Explain Plan můžeme někdy použít náklady k tomu, abychom zúžili problémový bod výkonu velkého a složitého dotazu.

Když se podíváme na plán vysvětlení tohoto dotazu, můžeme vidět, že jeho celkové náklady jsou poměrně vysoké.

Když se podíváme na detaily, můžeme vidět, že FULL table scan (FTS) v tabulce DETAIL_RECORD má vysokou cenu 51018. Všimněte si, jak vysoké náklady na FTS šíří plán. Všechny operace nad tímto FTS mají vysoké náklady kvůli vysokým nákladům na tento přístup k jedné tabulce. Přístup k tabulce CIMS_POLICIES_TO_PROCESS má relativně nízkou cenu, ale operace HASH JOIN má vysoké náklady pouze kvůli vysokým nákladům na přístup k tabulce DETAIL_RECORD.

Celkové náklady jsou jen o málo vyšší než náklady na přístup k této tabulce. Je jasné, že FTS v této tabulce je největším přispěvatelem k bolestnému bodu tohoto analyzovaného dotazu.

Když jsme se podívali na náklady Explain Plan tímto způsobem, mohli jsme se velmi rychle zaměřit na jednu oblast velmi složitého dotazu, která způsobuje největší potíže s výkonem. Bez zde provedené analýzy nákladů by bylo hodně práce určit, která část níže uvedeného dotazu způsobuje problém.


  1. Jak funguje NULLIF() na serveru SQL Server

  2. SQLalchemy neprovádí změny při nastavování role

  3. MySql Table Insert, pokud neexistuje, jinak aktualizujte

  4. dynamický dotaz postgres