Kompleksowe rozwiązania dla biznesu

Pamięciożerny MSSQL, czyli jak odzyskać trochę RAMu dla systemu w Windows 2003 Server / 7

Pamięciożerny MSSQL, czyli jak odzyskać trochę RAMu dla systemu w Windows 2003 Server / 7

Zastanawiałem się ostatnio ile pamięci RAM pochłania proces MSSQL serwera (sqlservr.exe) w małym przedsiębiorstwie (około 30 użytkowników), gdzie każdy pracuje przy pomocy serwera terminali na Windows 2003 Server.  Szybko okazało się że w zasadzie Microsoft nie nadał żadnych limitów i jeśli serwer ma 32GB RAMu to z powodzeniem MSSQL wyciągnie dla siebie 80% z tego. Co więcej okazało się, że nawet w nocy kiedy nikt nie korzysta z MSSQLa proces wcale nie zwalnia pamięci dla systemu. Efektem tego było coś takiego:

8GB RAM na serwerze ogółem, a zostaje 380MB.  Żart? Niestety nie. MSSQL zachowuje się w sposób zachłanny i rezerwuje tyle pamięci ile chce,  co potwierdzają limity bazy danych, które odnalazłem w Microsoft SQL Management Studio:

Nie jestem w stanie nawet odczytać tej wartości. Zmiana na przyzwoitą wartość np. 1200MB pomaga i wcale nie odczułem (ani użytkownicy)  że jest jakiś problem wydajnościowy.

Dziwi mnie tylko brak mechanizmów „samooczyszczania się” pamięci.  Zapraszam do kontaktu jeśli ktoś ma większą wiedzę na ten temat.