Kami memiliki SQL Server 2016 SP1 dengan memori maks ditetapkan ke 24GB.
Server ini memiliki jumlah kompilasi yang tinggi, hanya 10% dari kompilasi ini berasal dari permintaan Ad-Hoc. Jadi paket yang baru dikompilasi harus disimpan dalam cache paket tetapi ukuran cache paket tidak bertambah (sekitar 3,72GB).
Saya menduga bahwa ada tekanan memori lokal yang mengarah pada penghapusan paket dari cache. Batas tekanan cache rencana adalah 5GB. (75% memori target terlihat dari 0-4GB + 10% memori target terlihat dari 4GB-64GB + 5% dari memori target terlihat> 64GB). Ketika cachestore mencapai 75% dari batas tekanan, rencana harus dihapus dari cache. Dalam kasus saya 75% dari 5 GB adalah 3,75GB. Jadi masuk akal ini adalah penyebab kompilasi tinggi.
Apakah ada cara untuk mengukur (perfmon, peristiwa yang diperpanjang, ...) penghapusan dari rencana keluar dari cache? Jadi saya bisa yakin tekanan memori lokal benar-benar penyebab kompilasi tinggi?
sumber