อาการ
เมื่อมีการแทรกที่เกิดขึ้นพร้อมกันมากเกินไปในกลุ่มแฮชที่เหมือนกันหรือแคชของแผน SQL Server แบบเฉพาะกิจถึงขีดจำกัดของรายการของ๑๖๐,๐๓๖การขัดแย้งที่รุนแรงบน SOS_CACHESTORE spinlock เกิดขึ้น ในสถานการณ์นี้การใช้งาน CPU สูงจะเกิดขึ้นใน Microsoft SQL Server
สาเหตุ
ปัญหานี้เกิดขึ้นเมื่อแคชที่วางแผน SQL Server ถึงขีดจำกัดของรายการและแผนที่มีค่าใช้จ่ายต่ำต้องถูกเอาเพื่อแทรกแผนใหม่ การทำเช่นนี้จะทำให้เกิดการขัดแย้งหนักสำหรับ SOS_CACHESTORE spinlock ที่มีการซิงโครไนซ์สำหรับกลุ่มตารางแฮชของ SQL Server plan plan
การแก้ไข
ข้อมูลการอัปเดตที่สะสม
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
ข้อมูลเพิ่มเติม
แคชของแผนมีขีดจำกัดสองค่าได้แก่ขนาดทั้งหมดและจำนวนรวมของแผนทั้งหมด ขนาดและขีดจำกัดของจำนวนรายการจะได้รับการอธิบายในเอกสารทางเทคนิคต่อไปนี้:
จำนวนสูงสุดของรายการที่แคชที่วางแผนสามารถถือได้เป็นสี่เท่าของจำนวนครั้งที่จัดกลุ่ม คุณสามารถตรวจสอบข้อมูลนี้ได้โดยการเรียกใช้แบบสอบถามต่อไปนี้:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
ตัวอย่างเช่นบนระบบ๖๔บิตจำนวนของกลุ่มสำหรับแคชของแผน SQL Server คือ๔๐,๐๐๙ ดังนั้นจำนวนสูงสุดของรายการที่สามารถพอดีภายในแคชที่วางแผน SQL Server คือ๑๖๐,๐๓๖
ถ้าคุณมีปริมาณงานที่ใช้แบบสอบถามเฉพาะกิจที่แตกต่างกันขีดจำกัดนี้อาจเป็นแบบคอขวด การเปลี่ยนแปลงที่ทำโดยโปรแกรมแก้ไขด่วนนี้ที่อยู่ในสถานการณ์นี้ หลังจากที่คุณติดตั้งโปรแกรมแก้ไขด่วนนี้และเปิดใช้งานการเปลี่ยนแปลงโดยใช้ค่าสถานะการติดตามการเริ่มต้นใช้งาน "-T ๑๗๔" จำนวนกลุ่มจะเพิ่มขึ้นเป็น๑๖๐,๐๐๑บนระบบ๖๔บิต แคชที่วางแผนจะสามารถเก็บแผน๖๔๐,๐๐๔ได้มากที่สุด
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"