Да, можете да преминете към MyISAM. Но това не е непременно добра идея:
- MyISAM не поддържа транзакции
- Таблиците MyISAM често се нуждаят от
REPAIR
след катастрофа
Таблица InnoDB може да обработва повече от 8KB на ред. Очевидно сте се сблъскали с проблема, като сте имали дузина или повече TEXT/BLOB колони? В основната част на реда се съхраняват най-много 767 байта от колона; останалото се поставя в отделен блок.
Мисля, че един ROW_FORMAT
ще постави всички големи колони в отделен блок, оставяйки след себе си само 20 байта, които да сочат към него.
Друг подход към широките редове е да се направи "вертикално разделяне". Тоест, създайте друга таблица (или таблици) със съвпадащ PRIMARY KEY
и някои от големите колони. Особено удобно е да преместите рядко населени колони към такава таблица, след това да имате по-малко редове в тази таблица и да използвате LEFT JOIN
за извличане на данните. Освен това, ако имате колона(и), които рядко се налага да SELECT
, тогава това са добри кандидати за преместване - без JOIN
необходими, когато нямате нужда от тези колони.