Chciałbym uzyskać twój wkład w tej sprawie. Mam serwer SQL Server 2008r2 Ent. Ed. 64-bitowy z 16 rdzeniami i 64 GB pamięci RAM. Istnieje jedna instancja całkowicie poprawionego serwera SQL na 20111014.
Maksymalny RAM jest ustawiony na 60000 MB. Ilość darmowego RAMu wynosi 0 według menedżera zadań po kilku dniach online.
Jeśli zmienię maksymalny RAM na poniżej 53 GB, po kilku dniach ustabilizuje się i otrzymam trochę wolnego RAM.
Jest to proces SQL, który alokuje pamięci RAM zgodnie z menedżerem zadań. Jak pogodzić się z tym, na czym tak naprawdę polega problem? Jest rzeczą oczywistą, że przeprowadziłem już wiele testów, ale jeszcze nie rozwiązałem tego według własnych upodobań. i och, nie dostajemy typowego głodu pamięci, gdy dostępny taran spada do 0 za darmo.
Aktualizacja 1:
Zainspirowany innym pytaniem dotyczącym pamięci RAM na tej stronie /dba//a/7062/2744 . Użyłem tych dwóch, aby zobaczyć, do czego używana jest pamięć RAM.
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 ) ;
Pokazane przez nich kwoty to najpierw wybierz 7948432 Kb drugi 44030 57812 MB, czyli w sumie około 52 GB używane przez serwer sql ... więc gdzie poszła reszta mojej pamięci RAM? :-) Menedżer zadań pokazuje teraz buforowane 363, dostępne 401, wolne 40 i sqlservr.exe ma prywatny zestaw pamięci 64 459 656. Max Ram ustawiony na 60000 MB jak poprzednio.