Ja, du kan skifte til MyISAM. Men det er ikke nødvendigvis en god idé:
- MyISAM understøtter ikke transaktioner
- MyISAM-tabeller har ofte brug for
REPAIR
efter et nedbrud
En InnoDB-tabel kan håndtere mere end 8KB pr. række. Tilsyneladende løb du ind i problemet ved at have et dusin eller flere TEKST/BLOB-kolonner? Højst 767 bytes af en kolonne er lagret i hoveddelen af rækken; resten lægges i en separat blok.
Jeg tror, en ROW_FORMAT
vil sætte alle store kolonner i en separat blok og efterlade kun 20 bytes til at pege på den.
En anden tilgang til brede rækker er at lave "lodret partitionering". Det vil sige, byg en anden tabel (eller tabeller) med en matchende PRIMARY KEY
og nogle af de store kolonner. Det er især praktisk at flytte tyndt befolkede kolonne(r) til sådan en tabel, så have færre rækker i den tabel og bruge LEFT JOIN
for at hente dataene. Også, hvis du har nogle kolonne(r), som du sjældent behøver at SELECT
, så er det gode kandidater til at flytte -- ingen JOIN
nødvendigt, når du ikke har brug for disse kolonner.