Tak, możesz przełączyć się na MyISAM. Ale to niekoniecznie jest dobry pomysł:
- MyISAM nie obsługuje transakcji
- Tabele MyISAM często wymagają
REPAIR
po awarii
Tabela InnoDB może obsłużyć więcej niż 8 KB na wiersz. Najwyraźniej napotkałeś problem, mając kilkanaście kolumn TEXT/BLOB? W głównej części wiersza przechowywane jest maksymalnie 767 bajtów kolumny; reszta jest umieszczona w osobnym bloku.
Myślę, że jeden ROW_FORMAT
umieści wszystkie duże kolumny w osobnym bloku, pozostawiając tylko 20 bajtów wskazujących na to.
Innym podejściem do szerokich wierszy jest „partycjonowanie pionowe”. Oznacza to, że utwórz kolejną tabelę (lub tabele) z pasującym PRIMARY KEY
i niektóre z dużych kolumn. Szczególnie przydatne jest przeniesienie rzadko zapełnionych kolumn do takiej tabeli, a następnie posiadanie mniejszej liczby wierszy w tej tabeli i użycie LEFT JOIN
aby pobrać dane. Ponadto, jeśli masz jakieś kolumny, których rzadko potrzebujesz SELECT
, to są dobrzy kandydaci do przeniesienia — bez JOIN
potrzebne, gdy nie potrzebujesz tych kolumn.