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

Kích thước hàng quá lớn (> 8126), tôi có thể thay đổi InnoDB thành MyISAM được không

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 đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi cú pháp MySQL với INSERT đơn giản?

  2. Gửi biểu mẫu CodeIgniter và AJAX

  3. kết quả kép trong mảng của tôi (mysql_fetch_array)

  4. Làm cách nào để đặt lại các từ dừng trong MYSQL?

  5. Thay đổi div theo các hộp thả xuống đã chọn