Ja, u kunt overstappen naar MijnISAM. Maar dat is niet per se een goed idee:
- MijnISAM ondersteunt geen transacties
- MijnISAM-tabellen hebben vaak
REPAIR
nodig na een crash
Een InnoDB-tabel kan meer dan 8KB per rij aan. Blijkbaar ben je het probleem tegengekomen door een dozijn of meer TEXT/BLOB-kolommen te hebben? Maximaal 767 bytes van een kolom worden opgeslagen in het hoofdgedeelte van de rij; de rest wordt in een apart blok gezet.
Ik denk dat een ROW_FORMAT
zal alle grote kolommen in een apart blok plaatsen, waarbij er slechts 20 bytes overblijven om ernaar te verwijzen.
Een andere benadering van brede rijen is om "verticale partitionering" uit te voeren. Dat wil zeggen, bouw een andere tabel (of tabellen) met een overeenkomende PRIMARY KEY
en enkele van de grote kolommen. Het is vooral handig om dunbevolkte kolom(men) naar zo'n tabel te verplaatsen, dan minder rijen in die tabel te hebben en LEFT JOIN
te gebruiken om de gegevens op te halen. Ook als u enkele kolom(men) heeft die u zelden hoeft te SELECT
, dan zijn dat goede kandidaten om te verhuizen -- geen JOIN
nodig als je die kolommen niet nodig hebt.