Ujawnienie: Jestem pracownikiem MySQL, pracuję nad klastrem MySQL.
Powiedziałbym, że klaster MySQL może osiągnąć wyższą przepustowość / hosta niż podzielony MySQL + InnoDB pod warunkiem, że:
- Zapytania są proste
- Wszystkie dane mieszczą się w pamięci
Pod względem opóźnień klaster MySQL powinien mieć bardziej stabilne opóźnienie niż podzielony MySQL. Rzeczywiste opóźnienie dla danych czysto w pamięci może być podobne.
Ponieważ zapytania stają się bardziej złożone, a dane są przechowywane na dysku, porównanie wydajności staje się bardziej mylące. Aby uzyskać bardziej szczegółową odpowiedź, musisz opisać więcej na temat swojej aplikacji i wykonywanych zapytań, a także liczby hostów i ilości danych. Klaster MySQL zyskał ostatnio na równoległym wykonywaniu zapytań zlokalizowanych (AQL), co oznacza, że może konkurować z samodzielnym MySQLD, mimo że dane są rozproszone na wielu hostach.
Klaster MySQL jest obecnie ograniczony do „dzielenia” ponad 48 hostów. Shated MySQL w teorii nie ma granic. Jednak dla danej docelowej przepustowości może być potrzebnych mniej hostów klastra MySQL niż podzielonych hostów MySQL.
Bardziej interesujące różnice dotyczą spojrzenia na obszary inne niż wydajność:
- Klaster MySQL obsługuje dowolne zapytania we wszystkich odłamkach
- Klaster MySQL obsługuje dowolne transakcje we wszystkich odłamkach
- Klaster MySQL obsługuje synchroniczną replikację odłamków z automatycznym przełączaniem awaryjnym i odzyskiwaniem
- Klaster MySQL obsługuje węzeł dodawania online (rozszerzenie klastra)
- Shaged MySQL jest bardziej „roll your own”
Wbudowane dzielenie fragmentów daje maksymalny potencjał skalowania, ale zwiększa złożoność i ogranicza elastyczność w zakresie zapytań i operacji między niezależnymi fragmentami. Jeśli fragmentowanie jest przedwczesne, może to być przyczyną niektórych problemów. Klaster MySQL pozwala czerpać niektóre korzyści z fragmentowania bez konieczności ograniczania aplikacji do pojedynczego fragmentu.
W odniesieniu do poprzedniej odpowiedzi, kilka wyjaśnień:
„Chociaż klaster MySQL stanowi skargę ACID, nie zapewnia odpowiedniego silnika pamięci dla danych ze złożonymi kluczami”.
Klaster MySQL obsługuje złożone klucze podstawowe i pomocnicze. Nie jestem pewien, co nie jest w tym „odpowiednie”. Być może poprzedni plakat może to wyjaśnić?
„Aby mieć dane o tej samej kluczowej charakterystyce przechowywane w określonym zestawie węzłów danych, możesz wykonać następujące czynności:
- Przełącz wszystkie węzły danych w tryb offline, pozostawiając tylko te węzły danych, w których chcesz przechowywać dane o tych samych kluczowych cechach.
- Załaduj dane do klastra MySQL, który wypełnia tylko wybrane węzły danych
- Przełącz wszystkie węzły danych z powrotem do trybu online ”
To jest niepoprawne. Dystrybucja danych jest niezależna od tego, które węzły znajdują się w dowolnym momencie w trybie online. Klaster MySQL obsługuje różne schematy dystrybucji danych w celu wsparcia opisanych przez Ciebie optymalizacji. Opisuję dystrybucję danych w klastrze MySQL w blogu tutaj: Dystrybucja danych w klastrze MySQL