Büyük olasılıkla arabellek havuzuna daha fazla sayfa okumak isteyen bir sorgudan ve arabellek havuzunun bunu karşılamak için daha fazla bellek kapmasından kaynaklandı. SQL Server'ın bu şekilde çalışması gerekiyor. Kutu bellek baskısı yaşıyorsa, SQL Server'dan bellekte vazgeçmesini ister. Müşteri endişelenmemelidir.
sys.dm_os_buffer_descriptors
Hangi veritabanı tarafından arabellek havuzu belleğinin ne kadarının kullanıldığını görmek için DMV'yi kullanabilirsiniz . Bu snippet, her veritabanından kaç tane temiz ve kirli (son kontrol noktasından beri değiştirildi veya diskten okunur) sayfaların arabellek havuzunda olduğunu söyleyecektir. Daha fazla değişiklik yapabilirsiniz.
SELECT
(CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
(CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
GROUP BY [database_id], [is_modified]
ORDER BY [database_id], [is_modified];
GO
Bunu bu blog yazısında biraz daha açıklıyorum Depolama Motorunun İçi: Arabellek havuzunda neler var?
Ayrıca SQL Server'ın diğer bellek kullanımı (veritabanı başına değil) dökümü hakkında bir fikir verecektir KB 907877 ( SQL Server 2005'te bellek kullanımını izlemek için DBCC MEMORYSTATUS komutu nasıl kullanılır) ödeme yapabilirsiniz .
Bu yardımcı olur umarım!