Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyjaśnij plan kosztowy Punkt bólu

Wcześniej dzisiaj pracowałem z programistą nad zapytaniem, które miało słabą wydajność. To zapytanie było obszerne i złożone i początkowo wydawało się, że zniechęcający wysiłek, aby dowiedzieć się, gdzie leży problem z wydajnością. W przypadku planu wyjaśniania możemy czasami wykorzystać koszty, aby zawęzić problem związany z wydajnością dużego, złożonego zapytania.

Patrząc na plan wyjaśnienia tego zapytania, widzimy, że jego całkowity koszt jest dość wysoki.

Patrząc na szczegóły, widzimy, że pełne skanowanie tabeli (FTS) w tabeli DETAIL_RECORD ma wysoki koszt 51018. Zwróć uwagę, jak wysoki koszt FTS przenosi się na plan. Wszystkie operacje powyżej tego FTS wiążą się z wysokimi kosztami ze względu na wysoki koszt dostępu do jednej tabeli. Dostęp do tabeli CIMS_POLICIES_TO_PROCESS ma stosunkowo niski koszt, ale operacja HASH JOIN jest kosztowna tylko ze względu na wysoki koszt dostępu do tabeli DETAIL_RECORD.

Całkowity koszt to tylko trochę więcej niż koszt dostępu do tej tabeli. Oczywiste jest, że FTS w tej tabeli ma największy udział w problemie analizowanego zapytania.

Patrząc w ten sposób na koszty planu wyjaśniania, byliśmy w stanie bardzo szybko skoncentrować się na jednym obszarze bardzo złożonego zapytania, który powoduje największe problemy z wydajnością. Bez przeprowadzonej tutaj analizy kosztów określenie, która część poniższego zapytania powoduje problem, wymagałoby dużo pracy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Wait Events, o których każdy powinien wiedzieć

  2. Funkcja JSON_VALUE() w Oracle

  3. Dlaczego nie mogę zrobić a z x jako (...) z ADODB i Oracle?

  4. Komunikat o błędzie programu sqldeveloper:Karta sieciowa nie może nawiązać błędu połączenia

  5. Oracle uzyskuje wartość sumy kontrolnej dla porcji danych zdefiniowanej przez klauzulę select