Trường hợp này lưu trữ cơ sở dữ liệu SharePoint 2007 (SP). Chúng tôi đã trải qua nhiều bế tắc CHỌN / CHERTN đối với một bảng được sử dụng nhiều trong cơ sở dữ liệu nội dung SP. Tôi đã thu hẹp các tài nguyên liên quan, cả hai quá trình đều yêu cầu khóa trên chỉ mục không được nhóm.
INSERT cần khóa IX trên tài nguyên SELECT và SELECT cần khóa S trên tài nguyên INSERT. Biểu đồ khóa chết mô tả và ba tài nguyên, 1.) hai từ CHỌN (các luồng song song của nhà sản xuất / người tiêu dùng) và 2.) INSERT.
Tôi đã đính kèm biểu đồ bế tắc cho đánh giá của bạn. Bởi vì đây là cấu trúc mã và bảng của Microsoft, chúng tôi không thể thực hiện bất kỳ thay đổi nào.
Tuy nhiên, tôi đã đọc, trên trang web MSFT SP, họ khuyên bạn nên đặt tùy chọn cấu hình mức Instance MAXDOP thành 1. Vì trường hợp này được chia sẻ giữa nhiều cơ sở dữ liệu / ứng dụng khác, cài đặt này không thể bị tắt.
Do đó, tôi quyết định thử và ngăn các câu lệnh CHỌN này đi song song. Tôi biết đây không phải là một giải pháp mà là sửa đổi tạm thời để giúp khắc phục sự cố. Do đó, tôi đã tăng Ngưỡng chi phí của bộ xử lý song song từ 25 đến 40 tiêu chuẩn của chúng tôi khi làm như vậy, mặc dù khối lượng công việc không thay đổi (CHỌN / XÁC thường xuyên xảy ra) các bế tắc đã biến mất. Câu hỏi của tôi là tại sao?
SPID 356 INSERT có khóa IX trên một trang thuộc chỉ mục không phân cụm
SPID 690 CHỌN ID thực thi 0 có khóa S trên một trang thuộc cùng một chỉ mục không được phân cụm
Hiện nay
SPID 356 muốn khóa IX trên tài nguyên SPID 690 nhưng không thể giữ được vì SPID 356 đang bị chặn bởi SPID 690 ID thực thi 0 S khóa
SPID 690 ID thực thi 1 muốn khóa S trên tài nguyên SPID 356 nhưng không thể lấy được vì ID thực thi SPID 690 1 đang bị chặn bởi SPID 356 và bây giờ chúng tôi có bế tắc.
Kế hoạch thực hiện có thể được tìm thấy trên SkyDrive của tôi
Chi tiết bế tắc đầy đủ có thể được tìm thấy ở đây
Nếu ai đó có thể giúp tôi hiểu tại sao tôi thực sự đánh giá cao nó.
Bảng EventReceivers.
Id uniqueidentifier không 16
Tên nvarchar không 512
SiteID uniqueidentifier không 16
WebId uniqueidentifier không 16
hostid uniqueidentifier không 16
HOSTTYPE int không 4
ItemID int không 4
dirname nvarchar không 512
LeafName nvarchar không 256
Loại int không 4
SequenceNumber int không 4
hội nvarchar không 512
Lớp nvarchar không 512
Dữ liệu nvarchar no 512
Bộ lọc nvarchar no 512
SourceId tContentTypeId no 512
SourceType int no 4
Credential int no 4
ContextType varbinary no 16
ContextEventType varbinary không 16
ContextId varbinary không 16
ContextObjectId varbinary không 16
ContextCollectionId varbinary không 16
INDEX_NAME index_description index_keys
EventReceivers_ByContextCollectionId nonclustered nằm trên TIỂU SiteID, ContextCollectionId
EventReceivers_ByContextObjectId nonclustered nằm trên TIỂU SiteID, ContextObjectId
EventReceivers_ById nonclustered, độc đáo nằm trên TIỂU SiteID, Id
EventReceivers_ByTarget nhóm, độc đáo nằm trên TIỂU SiteID, WebId, hostid, HOSTTYPE, Type, ContextCollectionId, ContextObjectId, ContextId, ContextType, ContextEventType, SequenceNumber, hội, Class
EventReceivers_IdUnique không bao gồm, khóa duy nhất, duy nhất nằm trên Id PRIMARY
proc_InsertEventReceiver
vàproc_InsertContextEventReceiver
làm gì trong XDL? Ngoài ra để giảm sự song song tại sao không chỉ tác động trực tiếp đến các tuyên bố này (sử dụng MAXDOP 1) thay vì đóng gói với các cài đặt trên toàn máy chủ?