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

InnoDB hoặc MyISAM - Tại sao không phải cả hai?

Bạn có thể có cả bảng MyISAM và bảng InnoDB trong cùng một cơ sở dữ liệu. Tuy nhiên, những gì bạn sẽ thấy, khi có các bảng rất lớn, MyISAM sẽ gây ra sự cố khóa bảng. Điều này cuối cùng làm được là, nó khóa toàn bộ bảng cho một giao dịch duy nhất, điều này rất tệ nếu bạn có nhiều người dùng sử dụng trang web của mình. Ví dụ:Nếu bạn có người dùng đang tìm kiếm thứ gì đó trên trang web của bạn và truy vấn mất vài phút để hoàn thành, thì không người dùng nào khác có thể sử dụng trang web của bạn trong khoảng thời gian đó vì toàn bộ bảng đã bị khóa.

Mặt khác, InnoDB sử dụng khóa cấp độ hàng, nghĩa là, hàng đó là hàng duy nhất bị khóa khỏi bảng trong một giao dịch. InnoDB có thể chậm hơn khi tìm kiếm vì nó không cung cấp tìm kiếm toàn văn như MyISAM, nhưng đó không phải là vấn đề lớn khi bạn so sánh nó với khóa cấp bảng của MyISAM. Nếu bạn sử dụng InnoDB, giống như nhiều trang web lớn, thì bạn có thể sử dụng công cụ tìm kiếm phía máy chủ như Sphinx cho các tìm kiếm toàn văn. Hoặc bạn thậm chí có thể sử dụng bảng MyISAM để thực hiện tìm kiếm như f00 gợi ý. Cá nhân tôi đã đề xuất InnoDB chủ yếu vì tính năng khóa cấp hàng, nhưng cũng vì bạn có thể triển khai tìm kiếm toàn văn theo nhiều cách khác.

Về cơ bản, nếu bạn có một ứng dụng bảng tin với nhiều lựa chọn, chèn cũng như cập nhật, thì InnoDB có lẽ là lựa chọn thích hợp nói chung. chủ yếu với nội dung tĩnh (hoặc đọc nhiều hơn ghi), thì bạn có thể sử dụng 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. Truy vấn MySQL để tìm hàng số tương tự nhất

  2. Mysql:Cắt tất cả các trường trong cơ sở dữ liệu

  3. Các hàng được chọn ngẫu nhiên qua JPA

  4. Cách dễ dàng để xuất bảng SQL mà không cần truy cập vào máy chủ hoặc phpMyADMIN

  5. Kết nối Ứng dụng Heroku Lumen với Amazon RDS MySQL 5.7.19