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

Oracle 11g — Jak zoptymalizować powolny wybór wstawiania równoległego?

Popraw statystyki. Szacunkowa liczba wierszy to 1, ale rzeczywista liczba wierszy to ponad 7 milionów i ciągle rośnie. Powoduje to, że plan wykonania używa pętli zagnieżdżonej zamiast sprzężenia mieszającego. Pętla zagnieżdżona działa lepiej w przypadku małych ilości danych, a sprzężenie haszujące działa lepiej w przypadku dużych ilości danych. Naprawienie, które może być tak proste, jak upewnienie się, że odpowiednie tabele mają dokładne, aktualne statystyki. Zwykle można to zrobić, zbierając statystyki z ustawieniami domyślnymi, na przykład:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM'); .

Jeśli to nie poprawi oszacowania kardynalności, spróbuj użyć dynamicznej wskazówki próbkowania, takiej jak /*+ dynamic_sampling(5) */ . W przypadku tak długotrwałego zapytania warto poświęcić trochę więcej czasu na wstępne próbkowanie danych, jeśli prowadzi to do lepszego planu.

Użyj paralelizmu na poziomie instrukcji zamiast paralelizmu na poziomie obiektu. Jest to prawdopodobnie najczęstszy błąd związany z równoległym SQL. Jeśli używasz równoległości na poziomie obiektu, wskazówka musi odwoływać się do aliasu obiektu. Od 11gR2 nie ma potrzeby martwić się określaniem obiektów. Ta instrukcja wymaga tylko jednej wskazówki:INSERT /*+ PARALLEL(16) APPEND */ ... . Zwróć uwagę, że NOLOGGING nie jest prawdziwą wskazówką.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaszyfruj hasło w R - aby połączyć się z bazą danych Oracle za pomocą RODBC

  2. Jaka jest różnica między odczytem niepowtarzalnym a odczytem fantomowym?

  3. Wprowadzenie do kolekcji PL/SQL w bazie danych Oracle

  4. Kolejność Oracle SQL według problemów z podzapytaniami!

  5. Ponieważ SQL Server nie zawiera pakietów, co robią programiści, aby go obejść?