Đây là một bế tắc xác định tình hình. Điều này liên quan nhiều đến lỗi MySQL hơn là vấn đề Hibernate với các lớp của bạn. Trước tiên, hãy xem lại định nghĩa của bế tắc :
Xem trang này để biết thêm thông tin: http://en.wikipedia.org/wiki/Deadlock
Làm thế nào để bạn đối phó với tình huống này. Vâng, bạn cần đọc bài viết sau: Chốt lại trong InnoDB . Nó chứa hầu hết thông tin bạn cần. Bài viết này giải thích chi tiết cách theo dõi và đối phó với các bế tắc mà bạn cần phải đọc.
Về cơ bản, bạn sẽ cần thực hiện các bước sau dựa trên thông tin ở trên:
- Tạo MySQL Trace:Theo dõi tất cả các truy vấn đang được chạy trên máy chủ MySQL.
- Nhận thông tin theo dõi bế tắc
- Khớp dấu vết khóa chết và dấu vết MySQL với nhau để xác định nguyên nhân của khóa chết.
Bài viết trên InnoDB's cũng có một danh sách các biện pháp khắc phục vì vậy tôi sẽ không nhắc lại chúng ở đây. Chỉ cần ghi nhớ bế tắc không phải là một lỗi nghiêm trọng, bạn chỉ cần xử lý nó. Vì vậy, có thể bắt ngoại lệ và thử lại giao dịch. Ngoài ra, hãy đảm bảo rằng các truy vấn của bạn được tạo bởi Hibernate là tối ưu theo nghĩa là chúng đang sử dụng chỉ mục nơi họ có thể, v.v. Một điều khác bạn có thể thử là phân lô giao dịch trên Hibernate và thực hiện theo lô .
Tôi chắc chắn với hai liên kết trên, bạn sẽ có thể xử lý được vấn đề và đó sẽ là kinh nghiệm quý báu để bạn tự khắc phục vấn đề này. Nếu bạn tìm thấy bất kỳ mục cụ thể nào, bạn có vấn đề với việc thêm nó vào câu hỏi và hãy giải quyết vấn đề đó.