Chúng tôi có SQL Server 2016 SP1 với bộ nhớ tối đa được đặt thành 24GB.
Máy chủ này có số lượng biên dịch cao, chỉ 10% trong số các biên dịch này là từ các truy vấn Ad-Hoc. Vì vậy, các gói mới được biên dịch nên được lưu trữ trong bộ đệm của gói nhưng kích thước của bộ đệm của gói không tăng (khoảng 3,72 GB).
Tôi nghi ngờ rằng có áp lực bộ nhớ cục bộ dẫn đến loại bỏ các kế hoạch từ bộ đệm. Giới hạn áp suất bộ nhớ cache của gói là 5GB. (75% bộ nhớ mục tiêu hiển thị từ 0-4GB + 10% bộ nhớ mục tiêu hiển thị từ 4GB-64GB + 5% bộ nhớ mục tiêu hiển thị> 64GB). Khi một bộ đệm đạt tới 75% giới hạn áp suất, các gói sẽ bị xóa khỏi bộ đệm. Trong trường hợp của tôi 75% của 5 GB là 3,75 GB. Vì vậy, điều hợp lý là đây là nguyên nhân của các biên dịch cao.
Có cách nào để đo lường (perfmon, các sự kiện mở rộng, ...) loại bỏ khỏi các kế hoạch ra khỏi bộ đệm không? Vì vậy, tôi có thể chắc chắn áp lực bộ nhớ cục bộ thực sự là nguyên nhân của các biên dịch cao?