Ja, du kan byta till MyISAM. Men det är inte nödvändigtvis en bra idé:
- MyISAM stöder inte transaktioner
- MyISAM-tabeller behöver ofta
REPAIR
efter en krasch
En InnoDB-tabell kan hantera mer än 8KB per rad. Tydligen stötte du på problemet genom att ha ett dussin eller fler TEXT/BLOB-kolumner? Högst 767 byte av en kolumn lagras i huvuddelen av raden; resten läggs i ett separat block.
Jag tror att en ROW_FORMAT
kommer att lägga alla stora kolumner i ett separat block, och lämnar kvar bara 20 byte för att peka på den.
Ett annat tillvägagångssätt för breda rader är att göra "vertikal partitionering". Det vill säga, bygg en annan tabell (eller tabeller) med en matchande PRIMARY KEY
och några av de stora kolumnerna. Det är särskilt praktiskt att flytta glesbefolkade kolumner till en sådan tabell, sedan ha färre rader i den tabellen och använda LEFT JOIN
för att hämta data. Dessutom, om du har några kolumner som du sällan behöver SELECT
, då är de bra kandidater att flytta -- ingen JOIN
behövs när du inte behöver dessa kolumner.