MyISAM có nhiều loại khóa khác nhau. A SELECT
hoạt động đặt một KHÓA ĐỌC trên bàn. Có thể có nhiều khóa đọc đang hoạt động tại bất kỳ thời điểm nào, miễn là không có KHÓA VIẾT đang hoạt động . Các thao tác sửa đổi bảng, ví dụ. INSERT
, UPDATE
, DELETE
hoặc ALTER TABLE
đặt WRITE LOCK trên bàn. Khóa ghi chỉ có thể được đặt trên bàn khi không có khóa đọc nào đang hoạt động; Nếu có các khóa đọc đang hoạt động, MyISAM sẽ xếp hàng để khóa ghi được kích hoạt ngay sau khi tất cả các khóa đọc đang hoạt động hết hạn.
Tương tự như vậy khi có một khóa ghi đang hoạt động, việc cố gắng đặt một khóa đọc trên bảng sẽ xếp hàng khóa (và truy vấn được liên kết) cho đến khi khóa ghi hết hạn trên bảng.
Cuối cùng, tất cả điều này có nghĩa là:
- Bạn có thể có bất kỳ số lượng khóa đọc đang hoạt động nào (còn được gọi là khóa chia sẻ)
- Bạn chỉ có thể có một khóa ghi đang hoạt động (còn được gọi là khóa độc quyền)
Để biết thêm thông tin, hãy xem: http://dev.mysql. com / doc / refman / 5.5 / en / internal-lock.html