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

Procedura zdefiniowana przez użytkownika z DBMS_STATS, część II

Miałem poprzedni post o procedurach zdefiniowanych przez użytkownika z DBMS_STATS. Po kilku dalszych kopaniach ustaliłem, jak to działa. W mojej bazie danych mam pewne dane, które są przechowywane w typie zdefiniowanym przez użytkownika. Jeśli masz typ zdefiniowany przez użytkownika, możesz powiązać procedurę gromadzenia statystyk zdefiniowanych przez użytkownika z interfejsem Oracle Data Cartridge Interface (ODCI). Procedura ODCIStatsCollect jest wywoływana automatycznie po wywołaniu DBMS_STATS w tabeli zawierającej typ zdefiniowany przez użytkownika.

W moim przypadku wyśledziłem wysokie zużycie procesora do jednej instrukcji SQL, którą zewnętrzny dostawca aplikacji umieścił w swojej procedurze ODCISstatsCollect. W tym momencie staje się to po prostu problemem dostrajania zapytań. Jak możemy napisać zapytanie, aby zużywało mniej procesora? Po przyjrzeniu się problemowi stwierdziłem, że najłatwiejszym sposobem jest usunięcie podzapytania i umieszczenie wyników w globalnej tabeli tymczasowej. Następnie połącz resztę zapytania z GTT zamiast dołączać do samego podzapytania. W ten sposób zużycie procesora zostało radykalnie zmniejszone. Wysłałem poprawkę do dostawcy aplikacji i czekam, aby zobaczyć, co powiedzą.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kursor w procedurze zwraca więcej wartości niż zapytanie

  2. Literał ciągu znaków Oracle SQL Developer za długi błąd

  3. Wszystkie przydatne dynamiczne widoki wydajności 11g

  4. Kolejność wykonania warunków w klauzuli SQL 'gdzie'

  5. Pobierz typ tabeli Oracle z procedury składowanej za pomocą JDBC