อาการ
เมื่อคุณใช้อินสแตนซ์ใหม่ของ Microsoft SQL Server 2016 (หรือ 2017) หรืออินสแตนซ์ของ SQL Server 2016 (หรือ 2017) ที่อัปเกรดจากSQL Serverเวอร์ชันก่อนหน้า คุณจะพบปัญหาด้านประสิทธิภาพเนื่องจากการใช้งาน CPU สูง นอกจากนี้ ถ้าคุณสอบถามตาราง sys.dm_os_spinlock_stats คุณจะสังเกตเห็นค่าสูงในคอลัมน์ หมุนของ แถวSECURITY_CACHE (แคชความปลอดภัย) และแถว CMED_HASH_SET (แคชเมตาดาต้า) (เปรียบเทียบกับแถวอื่นๆ ในตาราง) ตัวอย่างเช่น คุณสังเกตเห็นค่าต่อไปนี้
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากมีความขัดแย้งของปุ่มหมุนสูงในระบบที่เกิดขึ้นพร้อมกันสูง ในระบบปฏิบัติการเหล่านี้ เธรด CPU หลายเธรดจะแข่งขันสําหรับทรัพยากร และหมุนสําหรับช่วงเวลาที่ขยายเวลา ในขณะที่ทํางานในลูปเป็นระยะๆ เพื่อระบุว่าทรัพยากรพร้อมใช้งานแทนที่จะให้ผลตอบแทนในทันที เมื่อเธรด CPU หลายเธรดยังคงหมุน ( แบบวนรอบ ) สําหรับทรัพยากรแทนที่จะให้มา ซึ่งทําให้เกิดปัญหาการใช้งาน CPU และประสิทธิภาพการทํางานสูง
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตแบบสะสมต่อไปนี้สําหรับ SQL Server:
หมายเหตุ หลังจากที่คุณนํา SQL Server 2016 Cumulative Update 2 (CU2) ไปใช้ ชื่อSECURITY_CACHEและชื่อCMED_HASH_SETจะถูกเปลี่ยนเป็น LOCK_RW_SECURITY_CACHE และ LOCK_RW_CMED_HASH_SET ตามลําดับ หลังจากนํา CU2 ไปใช้ ค่าจะปรากฏดังนี้
แต่ละปรับปรุงสะสมใหม่สําหรับSQL Serverประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการปรับปรุงสะสมก่อนหน้านี้ ดูการอัปเดตแบบสะสมล่าสุดสําหรับSQL Server:
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
อ้างอิง
เรียนรู้เกี่ยวกับ คําศัพท์ ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์
เอกสารไวท์เปเปอร์การวินิจฉัยและการแก้ไข Spinlock Contention ในSQL Serverจะกล่าวถึงปัญหาและวิธีแก้ปัญหาที่เกี่ยวข้องกับการขันเกลียวอย่างละเอียด