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

Dobra praktyka używania indeksów odwrotnych w kluczach zastępczych? (Wyrocznia)

Ogólnie rzecz biorąc, jeśli nie używasz RAC, nie ma powodu, aby używać indeksu z odwróconym kluczem.

Z punktu widzenia wydajności znacznie lepiej jest mieć jeden lub dwa gorące bloki w dowolnym momencie, które podlegają wstawianiu, ponieważ zasadniczo gwarantuje to, że gorące bloki będą znajdować się w buforze podręcznym i INSERT nie będzie musiał ponosić kosztów odczytu bloku z dysku. Jeśli w indeksie znajdują się wstawki umieszczane w losowych blokach, istnieje znacznie większe prawdopodobieństwo, że żądany blok przedawniłby się poza pamięcią podręczną i poniósłby koszt fizycznego I/O.

Koszt utrzymania zrównoważonego indeksu jest dość minimalny, ale nawet to sprzyja standardowemu indeksowi. Jeśli masz klucz podstawowy wygenerowany w sekwencji z normalnym indeksem, Oracle wykona Podział 90/10 bloków w prawym bloku, gdy ten blok się zapełni. W przeciwieństwie do tego, jeśli masz indeks klucza odwrotnego, Oracle musi wykonać podziały bloków 50/50 gdy dany blok się zapełni. Podział blokowy 50/50 kopiuje połowę danych ze starego bloku do nowego bloku, a podział blokowy 90/10 kopiuje tylko najbardziej prawą wartość danych do nowego bloku. Podział blokowy 90/10 jest zatem znacznie tańszy niż podział blokowy 50/50 i musiałbyś wykonać mniej więcej taką samą liczbę podziałów blokowych, niezależnie od rodzaju wybranego indeksu. Tak więc koszt utrzymania normalnego indeksu jest niższy niż koszt utrzymania indeksu klucza odwrotnego, nawet pomijając efekt pamięci podręcznej.

Powodem, dla którego warto rozważyć użycie indeksu klucza odwrotnego, jest to, że używasz RAC i chcesz uniknąć kosztów związanych z tym, że wiele węzłów RAC walczy o ten sam gorący blok. Jeśli ciągle musisz przesyłać gorący blok z jednego węzła do drugiego, aby wykonać następne wstawienie, warto użyć indeksu klucza odwrotnego, aby zmniejszyć tę rywalizację. Jeśli masz licencję na partycjonowanie, lepiej byłoby zamiast tego użyć indeksu partycjonowanego z haszem (można to zrobić niezależnie od tego, czy tabele są partycjonowane). Jeśli nie masz licencji na opcję partycjonowania, indeks klucza odwrotnego może być wystarczająco dobry do rozstrzygnięcia rywalizacji w gorącym bloku, aby nie wymagać licencji na partycjonowanie.




  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 naprawić Dostawca nie jest kompatybilny z wersją klienta Oracle?

  2. Utwórz lub zamień tabelę w Oracle pl/sql

  3. Znajdowanie sampli i dem dla konkretnej wersji JDK

  4. Błąd z transakcją JPA podczas wywoływania procedury składowanej

  5. Wyszukiwanie tekstowe Oracle w wielu tabelach i złączeniach