Tôi muốn đầu vào của bạn về điều này. Tôi có một máy chủ sql 2008r2 Ent. Ed. 64 bit với 16 nhân và RAM 64GB. Có một phiên bản máy chủ SQL được vá đầy đủ vào năm 20111014.
Ram tối đa được đặt thành 60000MB. Số lượng ram miễn phí là 0 theo trình quản lý tác vụ sau vài ngày trực tuyến.
Nếu tôi thay đổi ram tối đa xuống dưới 53GB thì sau vài ngày sẽ ổn định và có một số ram miễn phí.
Đây là quá trình sql phân bổ ram theo trình quản lý tác vụ. Làm thế nào để tôi đi đến thỏa thuận với những gì vấn đề thực sự là? Không cần phải nói rằng tôi đã thử nghiệm rất nhiều nhưng vẫn chưa giải quyết được điều này theo ý thích của tôi. và ohh chúng tôi không nhận được tình trạng đói bộ nhớ thông thường khi ram có sẵn xuống 0 miễn phí.
Cập nhật 1:
Lấy cảm hứng từ một Q / A khác liên quan đến RAM trên trang này /dba//a/7062/2744 . Tôi đã sử dụng hai cái này để xem RAM đang được sử dụng để làm gì.
SELECT TOP ( 10 )
[type] AS [Memory Clerk Type] ,
SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION ( RECOMPILE ) ;
SELECT DB_NAME(database_id) AS [Database Name] ,
COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
--WHERE database_id > 4 -- system databases
-- AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION ( RECOMPILE ) ;
Số lượng được sử dụng trong số này được chọn trước tiên là 7948432 Kb thứ hai 44030.57812 MB, tổng cộng khoảng 52 GB được sử dụng bởi máy chủ sql ... vậy phần còn lại của RAM của tôi đã đi đâu? :-) Trình quản lý tác vụ hiển thị ngay bộ nhớ cache 363, có sẵn 401, 40 miễn phí và sqlservr.exe có Bộ nhớ riêng 64 459 656. Max Ram được đặt thành 60000 MB như trước.