เรามี SQL Server 2016 SP1 โดยมีหน่วยความจำสูงสุดตั้งไว้ที่ 24GB
เซิร์ฟเวอร์นี้มีคอมไพล์จำนวนมากโดยมีเพียง 10% ของคอมไพล์เหล่านี้มาจากคิวรี Ad-Hoc ดังนั้นแผนที่รวบรวมใหม่ควรเก็บไว้ในแผนแคช แต่ขนาดของแผนแคชจะไม่เพิ่มขึ้น (ประมาณ 3.72GB)
ฉันสงสัยว่ามีแรงกดดันหน่วยความจำท้องถิ่นที่นำไปสู่การลบแผนจากแคช ขีดจำกัดความดันแคชของแผนคือ 5GB (75% ของหน่วยความจำเป้าหมายที่มองเห็นได้จาก 0-4GB + 10% ของหน่วยความจำเป้าหมายที่มองเห็นได้จาก 4GB-64GB + 5% ของหน่วยความจำเป้าหมายที่มองเห็น> 64GB) เมื่อ cachestore ถึง 75% ของขีด จำกัด แรงดันควรลบแผนออกจากแคช ในกรณีของฉัน 75% จาก 5 GB คือ 3.75GB ดังนั้นจึงเป็นไปได้ที่จะเป็นสาเหตุของการคอมไพล์สูง
มีวิธีวัด (perfmon, Extended events, ... ) การลบออกจากแผนออกจากแคชหรือไม่? ดังนั้นฉันจึงมั่นใจได้ว่าความดันในหน่วยความจำในเครื่องเป็นสาเหตุของการคอมไพล์สูง