Gần đây, một trong những ứng dụng ASP.NET của chúng tôi hiển thị lỗi khóa chết cơ sở dữ liệu và tôi được yêu cầu kiểm tra và sửa lỗi. Tôi quản lý để tìm ra nguyên nhân của sự bế tắc là một thủ tục được lưu trữ đang cập nhật nghiêm ngặt một bảng trong một con trỏ.
Đây là lần đầu tiên tôi thấy lỗi này và không biết cách theo dõi và khắc phục nó một cách hiệu quả. Tôi đã thử tất cả các cách có thể mà tôi biết, và cuối cùng thấy rằng bảng đang được cập nhật không có khóa chính! may mắn thay, đó là một cột danh tính.
Sau đó tôi đã tìm thấy nhà phát triển đã viết kịch bản cơ sở dữ liệu để triển khai sai. Tôi đã thêm một khóa chính và vấn đề đã được giải quyết.
Tôi cảm thấy hạnh phúc và quay lại dự án của mình, và thực hiện một số nghiên cứu để tìm ra lý do cho sự bế tắc đó ...
Rõ ràng, đó là một điều kiện chờ đợi vòng tròn gây ra bế tắc. Các cập nhật dường như mất nhiều thời gian hơn mà không có khóa chính so với khóa chính.
Tôi biết đó không phải là một kết luận được xác định rõ ràng, đó là lý do tại sao tôi đăng bài ở đây ...
- Là khóa chính bị thiếu là vấn đề?
- Có bất kỳ điều kiện nào khác gây ra bế tắc ngoài (loại trừ lẫn nhau, giữ và chờ đợi, không có quyền ưu tiên và chờ đợi thông tư)?
- Làm thế nào để tôi ngăn chặn và theo dõi các bế tắc?