Triệu chứng
Sau khi bạn cài đặt SQL Server 2014 Gói dịch vụ 1 (SP1), SQL Server 2012 SP3 hoặc SQL Server 2016, bạn sẽ gặp phải hiệu năng truy vấn chậm và mức sử dụng CPU của chế độ đặc quyền (nhân) tăng cao cho đến khi máy chủ được khởi động lại. Bạn cũng có thể thấy một số lượt chờ PAGELATCH_* lớn.
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 của SQL Server:
- Cập nhật tích lũy 2 cho SQL Server 2016
- Bản cập nhật tích lũy 5 cho SQL Server 2012 Gói Dịch vụ 3 (SP3)
- Bản cập nhật tích lũy 7 dành cho SQL Server 2014 SP1
Đề xuất: Cài đặt bản cập nhật tích lũy mới nhất cho SQL Server
Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Chúng tôi khuyên bạn nên tải xuống và cài đặt các bản cập nhật tích lũy mới nhất cho SQL Server:
- Bản cập nhật tích lũy mới nhất cho SQL Server 2016
- Bản cập nhật tích lũy mới nhất cho SQL Server 2012 SP3
- Bản cập nhật tích lũy mới nhất cho SQL Server 2014 SP1
Nguyên nhân
SQL Server sử dụng logic tăng cấp và hạ cấp chốt động (chốt thượng/phụ). Điều này cải thiện hiệu suất và khả năng mở rộng của SQL Server bằng cách theo dõi số lượng chốt trên một chốt và thời gian cần thiết để có được cùng một chốt nếu không tồn tại sự tranh chấp của chốt. Sau đó, các chốt đủ điều kiện được tăng cấp (siêu chốt) dựa trên mô hình này. Khi có nhiều thay đổi (chèn/cập nhật/xóa) trên Heap hoặc BTree (HoBT), các chốt liên kết với HoBT có thể được tăng cấp thành trạng thái siêu chốt. Tuy nhiên, việc giáng chức không tự động xảy ra. Bạn có thể đọc thêm về quá trình chốt siêu / phụ trong bài viết này.
Nếu các HoBT này sau đó được giải phóng, HoBT được giải phóng sẽ trở lại bộ nhớ đệm toàn cầu để tái sử dụng. Khi HOBT đó được tái sử dụng, nó sẽ sử dụng lại chốt được quảng bá trước đó, ngay cả khi không có sự tranh chấp nào trên HoBT. Điều này làm tăng chi phí CPU. Hành vi này làm tăng mức sử dụng CPU ở chế độ đặc quyền (kernel) của SQL Server cho đến khi máy chủ được khởi động lại. Sự gia tăng này thường không thêm quá vài micro giây với mỗi lần thực hiện. Bạn cũng có thể thấy một số lượng lớn PAGELATCH_ * chờ đợi vì những siêu chốt kéo dài này trên HoBT.
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".