Câu hỏi đã được hỏi trên serverfault quá.
Bạn có thể muốn xem bài viết này điều này giải thích rất nhiều kích thước hàng MySQL. Điều quan trọng cần lưu ý là ngay cả khi bạn sử dụng trườngTEXT hoặc BLOB, kích thước hàng của bạn vẫn có thể trên 8K (giới hạn choInnoDB) vì nó lưu trữ 768 byte đầu tiên cho mỗi trường nội dòng trong trang.
Cách đơn giản nhất để khắc phục điều này là sử dụng định dạng tệp Barracuda với InnoDB. Về cơ bản, điều này sẽ loại bỏ hoàn toàn vấn đề bằng cách chỉ lưu trữ con trỏ 20 byte vào dữ liệu văn bản thay vì lưu trữ 768 byte đầu tiên.
Phương pháp làm việc cho OP ở đó là:
-
Thêm phần sau vào
my.cnf
tệp dưới[mysqld]
phần.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
bảng để sử dụngROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Có khả năng những điều trên vẫn không giải quyết được sự cố của bạn. Đó là một lỗi đã biết (và đã xác minh)
với InnoDB và cách khắc phục tạm thời bây giờ là dự phòng cho MyISAM động cơ làm nơi lưu trữ tạm thời. Vì vậy, trong my.cnf
của bạn tệp:
internal_tmp_disk_storage_engine=MyISAM