Ano, můžete přejít na MyISAM. Ale to není nutně dobrý nápad:
- MyISAM nepodporuje transakce
- Tabulky MyISAM často potřebují
REPAIR
po havárii
Tabulka InnoDB zvládne více než 8 kB na řádek. Zřejmě jste narazili na problém tím, že jste měli tucet nebo více sloupců TEXT/BLOB? V hlavní části řádku je uloženo nejvýše 767 bajtů sloupce; zbytek je umístěn v samostatném bloku.
Myslím, že jeden ROW_FORMAT
umístí všechny velké sloupce do samostatného bloku a ponechá za sebou pouze 20 bajtů, aby na něj ukazovaly.
Dalším přístupem k širokým řádkům je „vertikální rozdělení“. To znamená, že vytvořte další tabulku (nebo tabulky) s odpovídajícím PRIMARY KEY
a některé z velkých sloupů. Obzvláště praktické je přesunout do takové tabulky řídce osídlené sloupce, pak mít v tabulce méně řádků a použít LEFT JOIN
k načtení dat. Také, pokud máte nějaké sloupce, které zřídka potřebujete SELECT
, pak jsou to dobří kandidáti na přesun – žádné JOIN
potřebné, když tyto sloupce nepotřebujete.