Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thay đổi giới hạn cho kích thước Hàng Mysql quá lớn

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à:

  1. 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
    
  2. ALTER bảng để sử dụng ROW_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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giải thích hàm IF () trong MySQL

  2. Cách chèn các cột đã chọn từ tệp CSV vào cơ sở dữ liệu MySQL bằng TẢI THÔNG TIN DỮ LIỆU

  3. Làm cách nào để đếm số hàng mà truy vấn MySQL trả về?

  4. Sử dụng PDO trong các lớp học

  5. Hướng dẫn thiết kế cơ sở dữ liệu cho hệ thống đặt hàng nhà hàng trong MySQL