Nếu bạn đang sử dụng InnoDB hoặc bất kỳ RDBMS giao dịch cấp hàng nào, thì có thể bất kỳ ghi giao dịch có thể gây ra bế tắc, ngay cả trong những tình huống hoàn toàn bình thường. Các bảng lớn hơn, ghi lớn hơn và các khối giao dịch dài thường sẽ làm tăng khả năng xảy ra bế tắc. Trong tình huống của bạn, nó có thể là sự kết hợp của những điều này.
Cách duy nhất để thực sự xử lý các bế tắc là viết mã của bạn để mong đợi chúng. Điều này thường không quá khó nếu mã cơ sở dữ liệu của bạn được viết tốt. Thường thì bạn chỉ có thể đặt try/catch
xung quanh logic thực thi truy vấn và tìm kiếm bế tắc khi xảy ra lỗi. Nếu bạn bắt gặp một cái, điều bình thường cần làm là cố gắng thực hiện lại truy vấn không thành công.
Tôi thực sự khuyên bạn nên đọc trang này trong hướng dẫn sử dụng MySQL. Nó có một danh sách những việc cần làm để giúp đối phó với những bế tắc và giảm tần suất của chúng.