Kiedy NIE chcesz partycjonować bazy danych? (myśląc o partycjonowaniu MySQL )
W moim przypadku
- Zacznę od kilku milionów rzędów, od tego powinno wyrosnąć.
- Klucz podstawowy w polu znaku, który służy jako najczęstsze ograniczenie zapytania (i wyszukiwania są częste - co najmniej kilka na sekundę).
- Klucz podstawowy zostałby zaszyfrowany, aby służył jako klucz partycji
- Aktualizacje będą dokonywane w każdym wierszu, który jest pobierany w częstych zapytaniach wymienionych powyżej
- Rzadziej wyszukiwane (względem kolumn daty lub innych) będą musiały trafić na wszystkie partycje
Nawet jeśli chodzi o ostatni punkt, czy wyszukiwanie nie przebiega równolegle, więc czy we wszystkich przypadkach jest to wygrana ? Jakie są wady partycjonowania? Dlaczego nie jest to coś, czego KAŻDY używa domyślnie, przynajmniej gdy patrzysz na ponad milion rekordów?
AKTUALIZACJA - wybrałem odpowiedź zgguy, ale zauważam, że dodałem własną odpowiedź z wynikami moich własnych badań, w tym link do naprawdę dobrej odpowiedzi na podobne pytanie, które było dla mnie bardzo przydatne.
Odpowiedź tutaj jest dobrze napisana i upodabnia argumenty do odpowiedzi zgguy , że partycjonowanie nie kupuje wiele, jeśli w ogóle, korzyści dla scenariusza na jednym komputerze, w którym najczęstsze wyszukiwania są oparte na kluczu podstawowym lub czymś podobnym (ponieważ indeksowane wyszukiwania powinny być tak samo szybkie).
W rzeczywistości wspólnym wątkiem wydaje się być to, że główny powód podziału jest styczny i głównie związany z zarządzaniem: np. Segreguj dane według daty, jeśli musisz czyścić stare rekordy od czasu do czasu. Chociaż zauważono, że może to również poprawić wydajność wyszukiwania, jeśli dane są takie, że większość wszystkich zapytań trafi tylko do ostatnio dodanych rekordów.
Widziałem też wspomnienie, że MySQL nigdy nie robi niczego równolegle (fajnie byłoby zobaczyć jakieś linki lub więcej wyjaśnień na ten temat).
Nie widziałem, żeby ktokolwiek mówił o tym, czy pisanie aktywności dodaje innych względów.
źródło
Najpierw przychodzi mi na myśl przycinanie partycji ; jeśli nie jest to coś, czego mogą użyć twoje zapytania.
Czy będziesz potrzebować usunięcia dużej ilości danych ze stołu, ponieważ partycjonowanie pomogłoby ci. Choć stary, ale ten post od Piotra ma kilka punktów do rozważenia.
a kolejną rzeczą, o której można pomyśleć, jest łatwość użycia w przypadku prostych tabel ... partycjonowanie wymaga dodatkowej pracy i konserwacji.
źródło