Trước đây tôi đã giả định rằng SQL Server sẽ chỉ báo cáo một phiên chặn trong cột chặn_session_id, nếu các phiên bị chặn đang chờ khóa logic và không phải bất cứ điều gì khác như a PAGELATCH_*
.
Bạn đang sử dụng sp_WhoIsActive
quy trình của Adam Machanic , không phải là cơ sở SQL Server tích hợp. Thủ tục của Adam báo cáo tất cả các nguyên nhân 'thú vị' của việc chặn, không chỉ chặn khóa. Thông tin cơ bản đến từ nhiều nguồn khác nhau, bao gồm sys Processes , sys.dm_exec numquests và sys.dm_os_waiting_t Nhiệm vụ .
Một nhiệm vụ có thể chờ đợi những thứ khác ngoài khóa. Ví dụ, có thể có được một khóa độc quyền trên một hàng trên một trang, nhưng sau đó vẫn phải chờ để có được một chốt trang độc quyền (vì các tác vụ khác đã chốt cùng một trang trong chế độ không tương thích).
Trong ví dụ của bạn, các PAGELATCH_EX
chốt trang độc quyền nằm trên các trang dữ liệu hoặc chỉ mục thông thường, không phải các trang PFS, GAM, SGAM, DCM hoặc BCM, như được chỉ ra bởi (*) ở cuối trang Wait_info .
Bạn có thể tìm thấy các tài liệu (mục blog) cho sp_WhoIsActive
ở đây .