it-swarm-eu.dev

SQL Server Max Memory neomezuje použití RAM

Chtěl bych, abyste k tomu přispěli. Mám server SQL 2008r2 Ent. Ed. 64bit s 16 jádry a 64 GB RAM. Od roku 20111014 je jedna instance serveru SQL plně opravena.

Maximální beran je nastaven na 60000 MB. Množství volného RAM je 0 podle manažera úloh po několika dnech online.

Pokud změním maximální beran na méně než 53GB, bude se po několika dnech stabilizovat a mít nějaké volné beranidlo.

Je to proces sql, který přiděluje berana podle správce úloh. Jak se vyrovnám s tím, co je problém ve skutečnosti? Je samozřejmé, že jsem už provedl řadu testů, ale zatím jsem to nevyřešil podle mého vkusu. a ohh, nedostaneme typické zpoždění hladovění paměti, když je dostupný beran na 0 zdarma.

Aktualizace 1:

Inspirováno dalším Q/A souvisejícím s RAM na této stránce https://dba.stackexchange.com/a/7062/2744 . Použil jsem tyto dva k vidění k čemu se používá 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 ) ;

Použitá částka je nejprve vybrána 7948432 Kb druhá, 44030 577812 MB, což je celkem asi 52 GB, které používá server sql ... takže kde se zbytek mého RAM go? :-) Správce úloh nyní zobrazuje mezipaměť 363, k dispozici 401, zdarma 40 a sqlservr.exe má soukromou sadu paměti 64 459 656. Max Ram nastaven na 60000 MB jako předtím.

18
Martin Sjöberg

Nastavení maximální paměti SQL serverů definuje limity pouze pro použití fondu vyrovnávacích pamětí. K tomuto limitu budou existovat variabilní, ale významné alokace.

Jonathan Kehayias's , Christian Bolton a John Samson mají na úrovni 300/400 příspěvků na toto téma. Brent Ozar má lépe čitelný článek, který by mohl být lepším místem pro začátek.

Také související: SQL Server 2008 R2 „Ghost Memory“

20
Mark Storey-Smith

Jak již bylo řečeno, vyrovnávací paměť a mezipaměť procedur se týkají pouze věcí, které jsou řízeny maximální pamětí serveru. Na serveru SQL Server je spousta dalších věcí, které mohou spotřebovávat paměť nad tento limit. Zahrnují (ale nejsou omezeny na):

  • Databázová pošta
  • SQLCLR
  • Rozšířené uložené procedury
  • Binární soubory, které si sami představují
  • SQL Mail
  • SSIS
  • SSAS
  • SSRS
16
mrdenny

Od SQL 2012 a dále v tomto DMV byl single_pages_kb nahrazen pages_kb. https://msdn.Microsoft.com/en-us/library/ms175019.aspx?f=255&MSPPError=-2147217396

Pokud tedy chcete spustit dotaz zahrnutý v otázce, odeberte na serveru 2012+ řetězec single_.

3
Razvan Zoitanu

http://msdn.Microsoft.com/en-us/library/ms178067.aspx

Chcete-li snížit maximální paměť serveru, bude pravděpodobně nutné restartovat server SQL, aby se uvolnila paměť.

Chápu, že pokud stránka ve fondu vyrovnávacích pamětí nebyla zapsána na disk, nebude uvolněna, dokud nebude.

Způsobí snížení nastavení maximální paměti, že SQL Server vyplaví špinavé stránky?

Mohl sledovat správce vyrovnávací paměti v perfmonu, aby to ověřil. Perfmon -> SQLServer: Správce vyrovnávacích pamětí: Databázové stránky

2
Craig Efrein