Triệu chứng
Khi sử dụng phiên bản mới của Microsoft SQL Server 2016 (hoặc 2017) hoặc phiên bản SQL Server 2016 (hoặc 2017) được nâng cấp từ phiên bản SQL Server cũ hơn, bạn sẽ gặp sự cố hiệu suất do mức sử dụng CPU cao. Ngoài ra, nếu bạn truy vấn bảng sys.dm_os_spinlock_stats, bạn sẽ nhận thấy giá trị cao trong cột xoay cho các hàng SECURITY_CACHE (Bộ đệm ẩn Bảo mật) và CMED_HASH_SET (Bộ đệm ẩn Siêu dữ liệu) (so với các hàng khác trong bảng). Ví dụ: bạn nhận thấy các giá trị sau đây.
Nguyên nhân
Sự cố này xảy ra do cạnh tranh khóa quay cao trong một hệ thống rất đồng thời. Trong các hệ điều hành, nhiều chủ đề CPU đang cạnh tranh cho tài nguyên và quay cho một khoảng thời gian dài trong khi họ chạy trong một vòng lặp định kỳ để xác định xem tài nguyên có sẵn thay vì ngay lập tức mang lại. Khi nhiều chủ đề CPU tiếp tục quay (trong một vòng lặp trong một thời gian) cho một tài nguyên thay vì sản lượng, điều này gây ra cao CPU sử dụng và các vấn đề hiệu suất.
Giải pháp
Sự cố này đã được khắc phục trong các bản cập nhật tích lũy sau đây SQL Server:
Chú ý Sau khi bạn áp dụng SQL Server cập nhật Tích lũy 2 (CU2) 2016, tên SECURITY_CACHE và CMED_HASH_SET được thay đổi tương ứng thành LOCK_RW_SECURITY_CACHEvà LOCK_RW_CMED_HASH_SET tương ứng. Sau khi cu2 được áp dụng, các giá trị sẽ xuất hiện như sau.
Mỗi bản cập nhật tích lũy mới dành cho SQL Server sẽ chứa tất cả các bản cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất dành cho doanh SQL Server:
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.
Tài liệu hướng dẫn Chẩn đoán và Giải quyết Tranh chấp Spinlock trên SQL Server thảo luận chi tiết các vấn đề và giải pháp liên quan đến tranh chấp spinlock.