Câu hỏi

Deadlock được giải quyết như thế nào trong SQL Server?

Câu trả lời

Trong SQL Server, deadlock xảy ra khi hai hoặc nhiều giao dịch cùng chặn lẫn nhau, mỗi giao dịch giữ khóa trên tài nguyên mà giao dịch khác cần để hoàn thành. Điều này dẫn đến tình trạng không giao dịch nào có thể tiếp tục thực hiện và giải phóng tài nguyên, khiến hệ thống bị đình trệ. SQL Server giải quyết deadlock bằng cách sử dụng một thuật toán phát hiện deadlock và chọn một giao dịch làm "nạn nhân" để hủy bỏ, giải phóng khóa và cho phép các giao dịch khác tiếp tục

Cách SQL Server Giải Quyết Deadlock

  1. Phát hiện Deadlock: SQL Server sử dụng một thread gọi là lock monitor để kiểm tra các tình huống deadlock. Nếu phát hiện ra một chu trình chờ đợi trong đồ thị chờ đợi (wait-for graph), nó xác định rằng đã xảy ra deadlock
  2. Chọn Nạn Nhân: SQL Server chọn một giao dịch để hủy bỏ dựa trên một số tiêu chí như chi phí của giao dịch (thời gian CPU sử dụng, số lượng tài nguyên đã tiêu thụ, v.v.) và chọn giao dịch có chi phí thấp nhất để hủy bỏ
  3. Hủy Bỏ Giao Dịch: Giao dịch được chọn làm nạn nhân sẽ bị hủy bỏ, và tất cả các thay đổi mà nó đã thực hiện sẽ được lùi lại (rollback). SQL Server sau đó sẽ trả lại thông báo lỗi 1205 cho ứng dụng, thông báo rằng giao dịch đã bị deadlock và đã bị hủy bỏ
  4. Xử Lý Lỗi: Ứng dụng nên có một trình xử lý ...
Bạn cần đăng nhập để xem
senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Giả sử một cột Student có hai cột, NameMarks. Làm thế nào để có được NameMarks của ba sinh viên top đầu?

middle

Kể tên một số nhược điểm của Hash index trong SQL Server?

senior

Sự khác biệt giữa UNION, MINUSINTERSECT trong SQL Server là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào