Jestem gotowy na przejście z MyISAM do InnoDB, ale chciałem wiedzieć, czy istnieje pełna lista rzeczy do poszukiwania? Na przykład nie widziałem żadnej wzmianki na liście, że uruchomienie DISABLE KEYS
na tabeli InnoDB spowoduje wyświetlenie ostrzeżenia, z wyjątkiem strony podręcznika dla ALTER TABLE
. Jest to coś, o czym muszę wiedzieć przed konwersją. Myślałem, że z moimi pytaniami nic mi nie będzie, ale najwyraźniej nie.
11
Wydaje mi się, że największą gotcha byłby w transakcjach. Będziesz chciał wiedzieć, czy biblioteki MySQL są domyślnie używane przez aplikacje auto_commit, czy nie.
Na przykład Python nie dokonuje automatycznego zatwierdzania. Oznacza to, że jeśli aplikacja wstawiała wiersz tuż przed zamknięciem swojego połączenia, wstawka zostanie teraz wycofana po przejściu na innodb. Na przykład skrypt Pythona musiałby koniecznie wywołać connection.commit ();
Kolejna różnica może dotyczyć wstawek wielorzędowych lub aktualizacji. Rozważ jedno wstawienie wielorzędowe
Zastanów się, co się stanie, jeśli wystąpi jakiś błąd, taki jak unikalna kolizja kluczy w wierszu 3. W MyISAM pierwsze dwa wiersze zostałyby zapisane, w innodb wszystkie zapisane wiersze zostałyby wycofane, nie pozostawiając niczego zapisanego nawet przy takim błędzie.
Z innodb wejdziesz do świata impasu. Nie są one z natury złe, chyba że występują z taką częstotliwością, aby uniemożliwić wykonanie jakiejkolwiek pracy. Jednak aplikacje będą musiały zostać zakodowane w taki sposób, aby przewidywały zakleszczenia i odpowiednio je obsługiwały (co najprawdopodobniej oznacza po prostu ponów próbę).
Rozważ ograniczenia pamięci / pamięci. Innodb wymaga znacznie więcej zasobów niż MyISAM. Jeśli masz wystarczającą ilość pamięci RAM, aby pule buforów były wystarczająco duże, aby pomieścić wszystkie stoły, to jesteś złoty.
Poszukaj tabel, które mają duże klucze podstawowe. Indeksowanie klastrowe Innodb oznacza, że każdy indeks wtórny zawiera inną kopię PK odpowiedniego wiersza. Jeśli masz 2 indeksy wtórne, oznacza to, że każdy wiersz PK jest zapisywany 3 razy (PK + każdy indeks). Jeśli pk rozciąga się na kilka typów kolumn i dużych typów danych (na przykład char (N)), możesz zobaczyć, jak wymagania indeksu mogą szybko eksplodować pod innodb.
źródło