Đầu tiên, như đã nêu trong một bài đăng khác, hãy sử dụng InnoDB. Nó là công cụ lưu trữ mặc định của MySQL 5.5 và mạnh mẽ hơn.
Thứ hai, hãy xem trang này: http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Bạn nên sử dụng nút CHỌN ... CHO CẬP NHẬT để ngăn các kết nối khác đọc hàng bạn sắp cập nhật cho đến khi giao dịch của bạn hoàn tất:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Điều này tốt hơn là khóa bảng vì InnoDB thực hiện khóa mức hàng. Giao dịch ở trên sẽ chỉ khóa các hàng có id =5 ... vì vậy, một truy vấn khác hoạt động với id =10 sẽ không bị truy vấn này giữ lại.