Korzystam z programu SQL Server 2008 i aplikacji internetowej na jednym dedykowanym serwerze z dostępną tylko 2 GB pamięci.
Jak zauważono w innym miejscu, SQL Server regularnie zajmuje do 98% pamięci fizycznej, co wydaje się spowalniać działanie aplikacji internetowej na serwerze.
We właściwościach serwera w SSMS, w obszarze Pamięć, maksymalna pamięć serwera (w Mb) jest ustawiona na: 2147483647
Moje pytanie brzmi: jaka byłaby zalecana liczba do umieszczenia w polu maksymalnej pamięci serwera, biorąc pod uwagę ilość dostępnej pamięci, i że ten sam serwer obsługuje również aplikację internetową?
Ponadto, czy można bezpiecznie zmienić tę liczbę, gdy działa program SQL Server?
Dziękuję za radę.
Odpowiedzi:
Najpierw odpowiem na ostatnie pytanie: Tak, możesz to zmienić, gdy serwer działa bez problemu. Jeśli chcesz zmienić wartość za pomocą SQL, możesz to zrobić za pomocą następującego zapytania
Zobacz tę stronę, aby uzyskać więcej informacji na temat ustawiania pamięci na serwerze SQL.
Twoje pierwsze pytanie, niestety odpowiedź brzmi: nie mogę ci powiedzieć, nie ma mnie tam.
Przy alokacji pamięci należy wziąć pod uwagę 1 000 000 rzeczy. Jak duże są zestawy wyników z zapytań, jak często są uruchamiane, czy zapytanie, które kiedyś zajmowało 20 ms, byłoby w porządku, a teraz zajmuje 200 ms?
Domyślne ustawienia Sql zakładają, że jest to jedyna rzecz działająca na serwerze, więc po prostu ustawia pamięć na MAX_VALUE i przestaje rosnąć, gdy cała dostępna pamięć jest używana (i na dedykowanym sprzęcie, który jest dość blisko tego, co chcesz się wydarzyć (zobacz Komentarz Aaronsa dla możliwego zastrzeżenia)). Zwykle każdy serwer WWW lub inne oprogramowanie wchodzące w interakcję z bazą danych działałoby na innym sprzęcie komunikującym się z nią przez sieć.
Naprawdę musisz po prostu ustawić wartość, którą uważasz za zdrową, a jeśli twój serwer jest nadal dławiony, obniż ją. Jeśli SQL nie zapewnia wystarczającej wydajności po podaniu potrzebnej pamięci serwerowi WWW, będziesz musiał albo kupić więcej pamięci RAM, albo przenieść SQL na dedykowany sprzęt.
źródło
Nigdy nie powinieneś pozwalać serwerowi sql na zajęcie całej pamięci na pudełku. Zależy to od tego, co jest uruchomione na tym pudełku i od ilości pamięci, którą ma ono, ale zawsze upewniam się, że zostawiam 10% pamięci dla O \ S.
źródło
W mojej obecnej firmie, w której jestem zatrudniony, zawsze używam minimalnych i maksymalnych ustawień dla SQL Server. Maksimum, jeśli serwer jest używany tylko dla SQL Server, zawsze ustawiam na pamięć MAX - 1 GB dla systemu operacyjnego. Minimum w naszym przypadku na 2 GB.
Jest to udowodnione w przypadku naszych instalacji. Nie każda instalacja i użytkowanie są takie same i nadal uważam, że pamięć nie zawsze robi to, co chcesz;)
W twoim przypadku może to być coś znanego, ale spójrz także na wymianę pamięci. Gdy masz tylko 2 GB na serwerze, a system operacyjny i program SQL Server działają przy „dużym obciążeniu”, zużycie pamięci będzie zbyt wysokie w przypadku, gdy system operacyjny będzie miał tendencję do wymiany. Upewnij się, że pliki stronicowania nie znajdują się na dysku systemu operacyjnego, w przeciwnym razie może dojść do całkowicie zablokowanego systemu (byłeś tam wcześniej i nie podobało mu się)
źródło
Właśnie zmieniłem „maksymalną pamięć serwera” na serwerze na żywo bez problemów. Wygląda na to, że domyślnie jest ustawiony jako 2147483647 we wszystkich bazach danych (ale nie wiem, jak właściwie odczytać jego wartość z SQL przed zmianą) ...
źródło
Trzymaj się wartości domyślnych w 99% przypadków. Umożliwi to dynamiczne zarządzanie pamięcią.
źródło