Deadlock là một hoàn cảnh mà trong đó 2 user ( hay transaction) có các khoá trên các đối tượng khác nhau, và mỗi user đang chờ khoá trên đối tượng của người dùng khác
Phát hiện và kết thúc deadlock
- Việc phát hiện deadlock được thực thi bởi 1 thread riêng biệt để quản lý khoá.
- Thread quản lý khoá (lock monitor thread) quét qua các phiên làm việc đang đợi khoá. Trong lúc quét lần đầu, SQL Server đánh dấu cho tất cả các phiên làm việc đang đợi tài nguyên. Khi SQL Server quét qua các phiên làm việc ở lần thứ hai, việc dò tìm deadlock đệ quy bắt đầu. Nếu phát hiện ra có 1 chuỗi các yêu cầu khoá, SQL Server loại bỏ transaction nào mà ít tốn kém nhất và đánh dấu transaction đó như 1 nạn nhân của deadlock (deadlock victim).
- Nhờ vào cơ chế quét các session để phát hiện deadlock, SQL Server kết thúc deadlock nhờ chọn một cách tự động 1 user nào đó làm nạn nhân của deadlock.
» Tin mới nhất:
» Các tin khác: