Tôi đọc rằng nếu tôi sử dụng IsolationLevel.ReadUncommned, truy vấn sẽ không đưa ra bất kỳ khóa nào. Tuy nhiên, khi tôi kiểm tra điều này, tôi đã thấy khóa sau:
Resource_Type: HOBT
Request_Mode: S (Được chia sẻ)
Khóa HOBT là gì? Một cái gì đó liên quan đến HBT (Heap hoặc Binary Tree lock)?
Tại sao tôi vẫn nhận được khóa S?
Làm cách nào để tránh khóa chia sẻ khi truy vấn mà không bật tùy chọn chụp nhanh mức cô lập?
Tôi đang thử nghiệm điều này trên SQLServer 2008 và tùy chọn ảnh chụp nhanh được đặt thành tắt. Các truy vấn chỉ thực hiện một lựa chọn.
Tôi có thể thấy rằng Sch-S là bắt buộc, mặc dù SQL Server dường như không hiển thị nó trong truy vấn khóa của tôi. Tại sao nó vẫn phát hành Khóa chung? Dựa theo:
THIẾT LẬP CẤP PHÂN TÍCH GIAO DỊCH (Transact-SQL)
Các giao dịch chạy ở
READ UNCOMMITTED
cấp độ không phát hành các khóa được chia sẻ để ngăn các giao dịch khác sửa đổi dữ liệu được đọc bởi giao dịch hiện tại.
Vì vậy tôi hơi bối rối.