Maksimum Server Memory
Ustawienie dostępne od SQL Server 2005.
Domyślnie SQL Server jest skonfigurowany tak, by używać całej dostępnej pamięci RAM. Wartość wpisana do konfiguracji to 2147483647MB (maksymalna wielkość typu Integer). SQL Server nie zajmuje jednak więcej niż ilość RAM dostępna na serwerze.
Pamięć ta po przypisaniu jej do SQL Server jest trzymana tak długo, aż nie nastąpi żądanie zwolnienia ze strony systemu Windows (np. w czasie backupu serwera Windows wbudowanym narzędziem "Kopia zapasowa systemu Windows"). Gdy SQL Server alokuje dla siebie całą dostępną pamięć RAM, nastąpi większe użycie pliku stronicowania systemu Windows.
Jest to ustawienie konfigurowane na poziomie poszczególnych instancji SQL Server - w przypadku instalacji wielu instancji należy skonfigurować na każdej osobno. Ustawienie dotyczy jedynie silnika relacyjnego, nie dotyczy SSRS, SSAS, SSIS...
Problemy powodowane przez brak określenia Max Server Memory
- Brak pamięci na inne programy uruchamiane na serwerze Windows
- Brak pamięci na procesy SQL Server, które nie korzystają z zakresu pamięci kontrolowanej przez Min & Max Server Memory (np. Linked Server, proceduy CLR...)
- Zwiększone użycie pliku stronicowania
- W przypadku instalacji wielu instancji SQL Server - jedna z instancji może mieć zbyt dużo przydzielonej pamięci, a inna zbyt mało.
Sposoby określenia prawidłowej wartości Max Server Memory
- Kalkulator on-line http://sqlmax.chuvash.eu/
- Inne źródła (np. na stronie Brent'a Ozar'a ) zalecają zostawienie 10% lub 4GB dla Windows
- W książce "Podręcznik administratora SQL Server 2014" podana jest tabela:
Pamięć
w systemie (GB) |
Pamięć dla
systemu
Windows (GB) |
Pamięć dla
SQL Server (GB) |
16
|
4
|
12
|
32
|
4
|
28
|
64
|
4
|
60
|
128
|
8
|
120
|
256
|
8
|
248
|
Minimum Server Memory
Ustawienie dostępne od SQL Server 2005.
Wielkość pamięci, której SQL Server ma nie oddawać w momencie żądania ze strony innych aplikacji lub systemu Windows. Domyślnie ustawiona na 0. Jest to ustawienie konfigurowane na poziomie poszczególnych instancji SQL Server - w przypadku instalacji wielu instancji należy skonfigurować na każdej osobno. Ustawienie dotyczy jedynie silnika relacyjnego, nie dotyczy SSRS, SSAS, SSIS...
To nie jest pamięć zajmowana przez SQL Server zaraz po starcie. SQL Server przy starcie alokuje tylko tyle pamięci, ile jest mu potrzebne. Jednak gdy podczas pracy ilość pamięci używanej przez SQL Server przekroczy limit określony w Min Server Memory, to limit ten będzie przestrzegany.
Problemy powodowane przez brak określenia Min Server Memory
1. Możliwe obniżenie wydajności SQL Server - w przypadku żądania pamięci przez inne aplikacje, oddaje zbyt dużo pamięci, musi więc częściej sięgać do danych z dysków twardych
Ustawianie parametrów
Polecenie:
EXEC sys.sp_configure N'show advanced options', N'1'
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'min server memory (MB)', N'12000'
GO
EXEC sys.sp_configure N'max server memory (MB)', N'24000'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'
RECONFIGURE WITH OVERRIDE
GO
Nie wymaga restartu usługi SQL Server. Może być bezpiecznie użyte w trakcie pracy systemu (polecenie "Reconfigure with override" powoduje między innymi wyczyszczenie cache'a planów zapytań, więc możliwe jest obniżenie wydajności).
Informacje dodatkowe:
Powiązany z:
1. konfiguracja Lock Pages in Memory
2. Buffer Pool
3. Wielkość pliku stronicowania dla SQL Server
4. https://blogs.msdn.microsoft.com/sqlsakthi/2011/03/11/importance-of-setting-max-server-memory-in-sql-server-and-how-to-set-it/
5. Dokumentacja wraz z informacjami o wyjątkach nie korzystających z tej puli pamięci: https://support.microsoft.com/en-us/kb/2663912
6. SQL Server nie uruchamia się - - zbyt mała wartość Max Server Memory
/>
Brak komentarzy:
Prześlij komentarz