Ja, Sie könnten zu MyISAM wechseln. Aber das ist nicht unbedingt eine gute Idee:
- MyISAM unterstützt keine Transaktionen
- MyISAM-Tabellen benötigen oft
REPAIR
nach einem Absturz
Eine InnoDB-Tabelle kann mehr als 8 KB pro Zeile verarbeiten. Anscheinend sind Sie auf das Problem gestoßen, weil Sie ein Dutzend oder mehr TEXT/BLOB-Spalten haben? Im Hauptteil der Zeile werden höchstens 767 Byte einer Spalte gespeichert; der Rest wird in einen separaten Block gestellt.
Ich denke, ein ROW_FORMAT
wird alle großen Spalten in einen separaten Block stellen und nur 20 Bytes zurücklassen, um darauf zu zeigen.
Ein weiterer Ansatz für breite Zeilen ist die "vertikale Partitionierung". Das heißt, erstellen Sie eine weitere Tabelle (oder Tabellen) mit einem passenden PRIMARY KEY
und einige der großen Säulen. Es ist besonders praktisch, spärlich gefüllte Spalten in eine solche Tabelle zu verschieben, dann weniger Zeilen in dieser Tabelle zu haben und LEFT JOIN
zu verwenden um die Daten zu holen. Auch wenn Sie einige Spalten haben, die Sie selten SELECT
benötigen , dann sind das gute Kandidaten zum Verschieben – kein JOIN
erforderlich, wenn Sie diese Spalten nicht benötigen.