Sì, puoi passare a MyISAM. Ma non è necessariamente una buona idea:
- MyISAM non supporta le transazioni
- Le tabelle MyISAM hanno spesso bisogno di
REPAIR
dopo un arresto anomalo
Una tabella InnoDB può gestire più di 8 KB per riga. Apparentemente hai riscontrato il problema avendo una dozzina o più colonne TEXT/BLOB? Nella parte principale della riga sono memorizzati al massimo 767 byte di una colonna; il resto viene messo in un blocco separato.
Penso che un ROW_FORMAT
metterà tutte le colonne di grandi dimensioni in un blocco separato, lasciando solo 20 byte per indicarlo.
Un altro approccio alle righe larghe è eseguire il "partizionamento verticale". Cioè, costruisci un'altra tabella (o tabelle) con una PRIMARY KEY
corrispondente e alcune delle grandi colonne. È particolarmente utile spostare colonne scarsamente popolate in una tabella di questo tipo, quindi avere meno righe in quella tabella e utilizzare LEFT JOIN
per recuperare i dati. Inoltre, se disponi di alcune colonne di cui raramente hai bisogno di SELECT
, allora quelli sono buoni candidati per trasferirsi -- no JOIN
necessario quando non hai bisogno di quelle colonne.