Oto szalone ranting i szaleństwo ...
Jeśli pozostawisz wszystkie dane w jednej tabeli (bez partycjonowania), będziesz mieć czas wyszukiwania O (log n) za pomocą klucza. Weźmy najgorszy wskaźnik na świecie, drzewo binarne. Każdy węzeł drzewa ma dokładnie jeden klucz. Idealnie zrównoważone drzewo binarne z 268 435 455 (2 ^ 28 - 1) węzłami ma wysokość 28. Jeśli podzielisz to drzewo binarne na 16 osobnych drzew, otrzymasz 16 drzew binarnych z 16 777 215 (2 ^ 24 - 1) węzły drzew o wysokości 24. Ścieżka wyszukiwania jest zmniejszona o 4 węzły, co oznacza zmniejszenie wysokości o 14,2857%. Jeśli czas wyszukiwania jest w mikrosekundach, skrócenie czasu wyszukiwania o 14,2857% jest zerowe lub nieistotne.
W prawdziwym świecie indeks BTREE miałby treenody z wieloma kluczami. Każde wyszukiwanie BTREE przeprowadzałoby wyszukiwanie binarne na stronie z możliwym przyzwoitym przejściem na inną stronę. Na przykład, jeśli każda strona BTREE zawiera 1024 klucze, wysokość drzewa wynosząca 3 lub 4 byłaby normą, a rzeczywiście krótka wysokość drzewa.
Zauważ, że partycjonowanie tabeli nie zmniejsza wysokości BTREE, która jest już mała. Biorąc pod uwagę podział na 260 milionów wierszy, istnieje nawet duże prawdopodobieństwo posiadania wielu BTREE o tej samej wysokości. Wyszukiwanie klucza może za każdym razem przechodzić przez wszystkie główne strony BTREE. Tylko jeden spełni ścieżkę wymaganego zakresu wyszukiwania.
Teraz rozwiń to. Wszystkie partycje istnieją na tym samym komputerze. Jeśli nie masz osobnych dysków dla każdej partycji, będziesz mieć dyskowe operacje we / wy i obroty wrzeciona jako automatyczne wąskie gardło poza wydajnością wyszukiwania partycji.
W takim przypadku parowanie według bazy danych niczego nie kupuje, jeśli id jest jedynym wykorzystywanym kluczem wyszukiwania.
Partycjonowanie danych powinno służyć do grupowania danych logicznie i spójnie w tej samej klasie. Wydajność przeszukiwania każdej partycji nie musi być głównym czynnikiem, o ile dane są poprawnie pogrupowane. Po osiągnięciu partycjonowania logicznego skoncentruj się na czasie wyszukiwania. Jeśli oddzielasz dane tylko według identyfikatora, możliwe jest, że dostęp do wielu wierszy danych nie będzie możliwy w celu odczytu lub zapisu. To powinno być najważniejsze: zlokalizuj wszystkie identyfikatory, do których najczęściej uzyskiwany jest dostęp, i podziel według partycji . Wszystkie rzadziej używane identyfikatory powinny znajdować się w jednej dużej tabeli archiwum, która jest nadal dostępna podczas wyszukiwania indeksu dla zapytania „raz w błękitne księżyc”.
Ogólny wpływ powinien mieć co najmniej dwie partycje: jedna dla często używanych identyfikatorów, a druga podział na pozostałe identyfikatory. Jeśli często używane identyfikatory są dość duże, możesz opcjonalnie podzielić je na partycje.