2009-08-31 7 views
8

Chcę się dowiedzieć, czy istnieje korzyść z wydajności partycjonowania kolumny liczbowej, która często jest celem kwerendy. Obecnie mam zmaterializowany widok, który zawiera ~ 50 milionów rekordów. Korzystając ze zwykłego indeksu b-tree i przeszukując tę ​​kolumnę numeryczną, otrzymuję koszt 7, a wyniki zapytania w około 0,8 sekundy (z niepochrytą pamięcią podręczną). Po dodaniu globalnej partycji mieszającej (z 64 partycjami) dla tej kolumny otrzymuję koszt 6, a wyniki zapytania około 0,2 sekundy (ponownie z niepochrytą pamięcią podręczną).Czy indeks partycjonowany globalnie jest lepszy (szybszy) niż indeks niepartycjonowany?

Moja pierwsza reakcja to fakt, że indeks partycjonowany poprawił wydajność mojego zapytania. Jednak zdaję sobie sprawę, że może to być tylko zbieg okoliczności i może być całkowicie zależny od poszukiwanych wartości lub innych, których nie znam. Więc moje pytanie brzmi: czy istnieje korzyść z wydajności dodania globalnej partycji hash do kolumny numerycznej na dużej tabeli lub jest kosztem określenia, które partycje indeksu mają zostać przeskanowane - zważone przez koszt zrobienia pełnego zakresu skanowania nieindeksowana partycja?

Jestem pewien, że tak jak wiele pytań Oracle, można odpowiedzieć "to zależy". :) Chciałbym się dowiedzieć, jakie czynniki powinienem rozważyć, aby określić zalety każdego podejścia.

Dzięki!

Odpowiedz

4

Jestem pewien, że znalazłeś to odniesienie w swoich badaniach - Partitioned Tables and Indexes. Jednak daję link do niego, jeśli ktoś jest zainteresowany, jest to bardzo dobry materiał na temat partycjonowania.

Prosto do punktu - Partycjonowany indeks rozkłada indeks na kawałki (16 w twojej sytuacji) i rozkłada dane w zależności od ich zakodowanych kluczy partycjonowania. Kiedy chcesz go użyć, Oracle "oblicza" skrót klucza i określa, w której sekcji kontynuować wyszukiwanie.

Wiedząc, jak działa wyszukiwanie indeksu, na naprawdę olbrzymich danych uważam, że lepiej jest wybrać indeks partycjonowany w celu zmniejszenia drzewa indeksu, które przemierzasz (zwykły indeks). To naprawdę zależy od danych, które znajdują się w tabeli (jak składa się regularne drzewo indeksów) i jest mieszaniem i bezpośrednim skokiem do niższego węzła szybciej niż zwykłe drzewo przechodzące z węzła początkowego.

Wreszcie, musisz być bardziej pewny siebie z wynikami testu. Jeśli jedna technika daje lepsze wyniki na dokładnych danych niż inne, nie martw się, aby ją wdrożyć.