środa, 24 listopada 2010

Partycjonowanie tabel

Dobre wieści:

Jeśli mamy duuuuuże tabele (tzn. zawierające dużo danych) to ich przetwarzanie możemy sobie usprawnić dzieląc je na takie wirtualne części nazywane partycjami. Dzięki temu:
  1. Można zadać zapytanie tylko do jednej partycji w tabeli i dzięki temu nie ma potrzeby przetwarzania całej tabeli (co jak się nie trudno domyślić jest szybsze)
  2. Joiny śmigają szybciej na takiej jednej partycji niż na całej tabeli, to samo grupowania, sortowanie i cała reszta możliwych sposobów na męczenie bazy.
  3. Partycje możemy sobie stworzyć na podstawie zawartości kolumny w tabeli, dzięki czemu możemy np. mieć szybszy dostęp do faktur przykładowo z tego roku.
  4. W ogóle idą za tym wszystkie korzyści związane z mniejszą ilością danych do przetworzenia.

Partycje możemy generalnie tworzyć na podstawie zawartości lub podzielić na sekcje równej wielkości. Dzielone na podstawie zawartości mogą być różnych rozmiarów - możemy mieć przykładowo milion faktur z tego roku, ale 5 milionów z zeszłego.

Partycjonowanie względem zawartości:




Powyżej podzieliłem tablicę na partycję względem zawartości kolumny salary na sekcje.

Partycjonowanie hashowe (takie na równej wielkości kawałki):
 



Złe wieści:

  1. Taka opcja dostępna jest tylko w wersji Enterprise (która kosztuje tyle co dom Twój i wszystkich Twoich sąsiadów z całej wioski :P )
  2. Sama tylko opcja kosztuje tyle co całkiem niezgorszy samochód 
Nie, nie robię sobie jaj. Sam sprawdź: Cennik :D

1 komentarz:

  1. A od siebie dodam, że podobną funkcjonalność można spokojnie ogarnąć za pomocą PL/SQL + widoki. Nie jest to może taki fullwypas jak oryginał, ale do np. archiwizacji danych styknie :)

    OdpowiedzUsuń