Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn có một bảng có chỉ mục danh mục tham số, và bảng có nhiều cột (trong hàng trăm).
-
Dữ liệu (kiểu dữ liệu) của các cột này được nén cao dữ liệu chẳng hạn như varchar.
-
Bạn chạy một câu lệnh Select so với bảng này để chọn một tập hợp con lớn hoặc tất cả các cột từ bảng này.
-
Câu lệnh Select của bạn có mệnh đề where là giới hạn đầu ra của nó đến một hàng rất ít (truy vấn được chọn lọc cao).
Trong trường hợp này, bạn có thể gặp phải bất kỳ hoặc tất cả các triệu chứng sau đây:
-
Khối lượng công việc đồng thời, (các truy vấn khác được thực hiện cùng lúc trên máy chủ như truy vấn này), có thể gặp phải giảm hiệu suất và mất thông lượng.
-
Bạn có thể thấy mức sử dụng CPU cao.
-
Nếu bạn truy vấn sys.dm_os_ring_buffers và xem các mục nhập kiểu schedulermonitor , bạn tìm thấy liên tục "không năng suất lên lịch" các tin nhắn đã ghi nhật ký trong thời gian thực hiện truy vấn này.
-
Bạn có thể nhận được lỗi trình lập lịch không thể làm trong Nhật ký lỗi và tệp kết xuất bộ nhớ triệu chứng có thể được tạo ra.
Giải pháp
Vấn đề lần đầu tiên được khắc phục trong bản Cập Nhật tích lũy SQL Server sau đây:
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào 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:
Thông tin Bổ sung
Sửa chi tiếtNgười lao động xử lý các phân đoạn cột (bỏ nén chúng và quét chúng cho các hàng đủ điều kiện) được dùng để "mang tính năng sử dụng CPU cho các công nhân khác/truy vấn đồng thời khi một số ngưỡng nhất định là đầu ra. Khi mệnh đề where được chọn lọc cao để tạo ra vài hàng, công nhân xử lý truy vấn này được xử lý và số lượng phân đoạn lớn không nén (vì các hàng có đủ điều kiện) trước khi họ trao CPU theo cách hợp tác đối với những người khác để xử lý khối lượng công việc của họ. Điều này đã dẫn đến việc sử dụng CPU không đều và suy thoái thông lượng cho khối lượng công việc đồng thời. Bản sửa lỗi tối ưu hóa và cải thiện thuật toán chia sẻ CPU cho truy vấn columnstore như vậy.
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.