Có, bạn có thể chuyển sang MyISAM. Nhưng đó không hẳn là một ý kiến hay:
- MyISAM không hỗ trợ giao dịch
- Các bảng MyISAM thường cần
REPAIR
sau một vụ va chạm
Một bảng InnoDB có thể xử lý hơn 8KB mỗi hàng. Rõ ràng là bạn đã gặp phải sự cố khi có hàng tá cột TEXT / BLOB trở lên? Nhiều nhất 767 byte của một cột được lưu trữ trong phần chính của hàng; phần còn lại được đặt trong một khối riêng biệt.
Tôi nghĩ một ROW_FORMAT
sẽ đặt tất cả các cột lớn trong một khối riêng biệt, chỉ để lại 20 byte để trỏ vào nó.
Một cách tiếp cận khác đối với các hàng rộng là thực hiện "phân vùng theo chiều dọc". Nghĩa là, tạo một bảng (hoặc các bảng) khác với PRIMARY KEY
phù hợp và một số cột lớn. Đặc biệt hữu ích khi di chuyển (các) cột được điền thưa thớt đến một bảng như vậy, sau đó có ít hàng hơn trong bảng đó và sử dụng LEFT JOIN
để tìm nạp dữ liệu. Ngoài ra, nếu bạn có một số (các) cột mà bạn hiếm khi cần SELECT
, thì đó là những ứng cử viên tốt để di chuyển - không JOIN
cần thiết khi bạn không cần những cột đó.