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

Oracle 11G - Efekt wydajności indeksowania przy wstawianiu

Prawdą jest, że modyfikacja tabeli jest szybsza, jeśli nie trzeba również modyfikować jednego lub więcej indeksów i ewentualnie również sprawdzać ograniczenia, ale jest to również w dużej mierze nieistotne, jeśli musisz następnie dodać te indeksy. Musisz wziąć pod uwagę całkowitą zmianę w systemie, którą chcesz wprowadzić, a nie tylko jedną jego część.

Oczywiście, jeśli dodajesz pojedynczy wiersz do tabeli, która zawiera już miliony wierszy, byłoby głupotą upuszczać i przebudowywać indeksy.

Jednak nawet jeśli masz całkowicie pustą tabelę, do której zamierzasz dodać kilka milionów wierszy, odroczenie indeksowania na później może być wolniejsze.

Powodem tego jest to, że takie wstawianie najlepiej wykonywać za pomocą mechanizmu ścieżki bezpośredniej, a gdy używasz wstawek ścieżki bezpośredniej do tabeli z indeksami, budowane są tymczasowe segmenty, które zawierają dane wymagane do zbudowania indeksów (dane plus wiersze ). Jeśli te tymczasowe segmenty są znacznie mniejsze niż właśnie załadowana tabela, będą one również szybsze do skanowania i tworzenia indeksów.

alternatywą, jeśli masz pięć indeksów w tabeli, jest wykonanie pięciu pełnych skanów tabeli po jej załadowaniu w celu zbudowania indeksów.

Oczywiście w grę wchodzą ogromne szare obszary, ale dobrze zrobione:

  1. Kwestionowanie autorytetu i ogólne zasady kciuka, oraz
  2. Przeprowadzanie rzeczywistych testów w celu ustalenia faktów we własnym przypadku.

Edycja:

Dalsze rozważania — uruchamiasz kopię zapasową, gdy indeksy są usuwane. Teraz, po przywracaniu awaryjnym, musisz mieć skrypt, który weryfikuje, czy wszystkie indeksy są na swoim miejscu, gdy firma depcze Ci po karku, aby przywrócić system.

Ponadto, jeśli absolutnie zdecydowałeś się nie utrzymywać indeksów podczas ładowania zbiorczego, nie usuwaj indeksów — zamiast tego wyłącz je. Pozwala to zachować metadane dotyczące istnienia i definicji indeksów oraz umożliwia prostszy proces odbudowy. Uważaj tylko, aby przypadkowo nie ponownie włączyć indeksów przez obcięcie tabeli, ponieważ spowoduje to ponowne włączenie wyłączonych indeksów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać wszystkie poziomy danych za pomocą pojedynczego zapytania SQL dla zestawienia materiałów?

  2. Uruchom zapytanie sql z limitem czasu w PHP lub Jak w PHP, aby zatrzymać zapytanie sql już rozpoczęte?

  3. Samouczek Oracle sql:Ograniczanie zbioru danych

  4. Najszybszy sposób na obliczenie hash całej tabeli

  5. Jak wyodrębnić grupę z wyrażenia regularnego w Oracle?