อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณมีตารางที่มีดัชนีคลัสเตอร์ columnstore อยู่และตารางจะมีหลายคอลัมน์ (เป็นร้อยๆ)
-
ข้อมูล (ชนิดข้อมูล) ของคอลัมน์เหล่านี้คือข้อมูลอัดสูงเช่นvarchar
-
คุณเรียกใช้คำสั่ง select กับตารางนี้เพื่อเลือกชุดย่อยขนาดใหญ่หรือคอลัมน์ทั้งหมดจากตารางนี้
-
คำสั่ง select ของคุณมีส่วนคำสั่ง where ที่จำกัดผลลัพธ์ของผลลัพธ์นั้นไปยังแถวน้อยมาก (คิวรีจะถูกเลือกมาก)
ในสถานการณ์สมมตินี้คุณอาจพบอาการต่อไปนี้ใดๆหรือทั้งหมด:
-
ปริมาณงานที่พร้อมกัน (แบบสอบถามอื่นๆที่ดำเนินการในเวลาเดียวกันบนเซิร์ฟเวอร์เป็นแบบสอบถามนี้) อาจพบการลดลงของประสิทธิภาพการทำงานและการสูญเสียปริมาณงาน
-
คุณอาจเห็นการใช้งาน CPU สูงเป็นพักๆ
-
ถ้าคุณ sys.dm_os_ring_buffersแบบสอบถามและดูรายการชนิด SchedulerMonitor คุณจะพบข้อความ "ตัวจัดกำหนดการส่งที่ไม่ใช่ค่า" เป็นระยะๆในระหว่างการดำเนินการของคิวรีนี้
-
คุณอาจได้รับข้อผิดพลาดของตัวจัดกำหนดการที่ไม่ใช่ผลลัพธ์ในบันทึกข้อผิดพลาดและไฟล์การถ่ายโอนข้อมูลหน่วยความจำของอาการอาจถูกสร้างขึ้น
การแก้ไข
ปัญหานี้ได้รับการแก้ไขครั้งแรกในการอัปเดตที่สะสมของ SQL Server ต่อไปนี้:
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ เราขอแนะนำให้คุณดาวน์โหลดและติดตั้งการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
ข้อมูลเพิ่มเติม
แก้ไขรายละเอียดผู้ปฏิบัติงานที่ดำเนินการส่วนของคอลัมน์ (uncompressing พวกเขาและการสแกนสำหรับแถวที่มีคุณสมบัติเหมาะสม) ที่ใช้ในการใช้งาน CPU "ผลตอบแทน" สำหรับการใช้งาน CPU ของคนอื่นๆ/แบบสอบถามที่เกิดขึ้นพร้อมกัน executions เมื่อจำนวนแถวที่มีการแสดงผล เมื่อส่วนคำสั่งwhere ถูกเลือกอย่างมากในการสร้างแถวน้อยผู้ปฏิบัติงานที่ประมวลผลคิวรีนี้จะถูกดำเนินการที่ไม่ถูกบีบอัดและจำนวนมากของส่วน (เนื่องจากแถวน้อยมากมีคุณสมบัติ) ก่อนที่พวกเขาจะมอบ CPU ในลักษณะของความร่วมมือเพื่อประมวลผลปริมาณงานของพวกเขา การใช้งาน CPU ที่ไม่สม่ำเสมอและการลดความเร็วของปริมาณงานที่เกิดขึ้นพร้อมกัน การแก้ไขปรับให้เหมาะสมและปรับปรุงอัลกอริทึมการแชร์ CPU สำหรับแบบสอบถามแบบ columnstore ดังกล่าว
อ้างอิง
เรียนรู้เกี่ยวกับคำ ศัพท์เฉพาะ ทางที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์