KB3191487 - Cải thiện tính ổn định của SQL Server và thực thi truy vấn đồng thời cho một số truy vấn cột trong SQL Server 2014 và 2016

Áp dụng cho
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Triệu chứng

Hãy cân nhắc các trường hợp sau:

  • Bạn có bảng chứa các chỉ mục cột kho liên cụm trên đó và bảng đó có nhiều cột (hàng trăm).
  • Dữ liệu (kiểu dữ liệu) của các cột này là dữ liệu có khả năng nén cao, chẳng hạn như varchar.
  • Bạn chạy một câu lệnh SELECT đối 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 giới hạn đầu ra của câu lệnh ở rất ít hàng (truy vấn có tính 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ủ với truy vấn này), có thể gặp phải tình trạng giảm hiệu suất và mất lưu lượng.
  • Bạn có thể thấy mức sử dụng CPU cao không liên tục.
  • Nếu bạn truy vấn sys.dm_os_ring_buffers và xem các mục nhập loại SchedulerMonitor, bạn sẽ thấy các thông báo "bộ lập lịch không nhường quyền" bị ghi liên tục trong thời gian thực thi truy vấn này.
  • Bạn có thể nhận được lỗi bộ lập lịch không cho phép trong nhật ký lỗi và tệp kết xuất bộ nhớ triệu chứng có thể được tạo.

        
      

Giải pháp

Sự cố này đã được khắc phục lần đầu tiên trong bản cập nhật tích lũy tiếp theo của SQL Server:

Đề 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:

      

Xem thêm thông tin

Chi tiết sửa lỗiNhững công việc xử lý các phân đoạn cột (giải nén chúng và quét chúng để tìm các hàng đủ điều kiện) được sử dụng để "nhượng" mức sử dụng CPU cho các nhân viên khác/thực thi truy vấn đồng thời khi một số hàng ngưỡng nhất định được xuất ra. Khi mệnh đề WHERE có tính chọn lọc cao để tạo ra vài hàng, những người làm việc xử lý truy vấn này sẽ xử lý số lượng lớn các phân đoạn không nén (vì có rất ít hàng đủ điều kiện) trước khi họ từ bỏ CPU theo cách hợp tác cho những nhân viên khác xử lý khối lượng công việc của họ. Điều này dẫn đến mức sử dụng CPU không thường xuyên và giảm lưu lượng đối với 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 các truy vấn cửa hàng cột như vậy.

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.