SQL Server zużywa 87,5% pamięci RAM serwera. To ostatnio spowodowało wiele wąskich gardeł wydajności, takich jak powolność. Badałem ten problem. Jednym z typowych rozwiązań, które można znaleźć w Internecie, jest ustawienie maksymalnego limitu dla SQL Server. Dokonano tego i uzyskano wiele ulepszeń. Chcę wiedzieć, dlaczego, jeśli maksymalna wartość pamięci nie jest ustawiona, dlaczego SQL Server nadal zużywa zasoby
36
Odpowiedzi:
SQL Server zużywa tyle pamięci, ile na to pozwalasz . Domyślnie liczba ta obejmowałaby 100% twojej pamięci numerycznej na twoim komputerze. Właśnie dlatego widzisz to, co widzisz. Jeśli dasz SQL Server 24 GB pamięci, wówczas SQL Server dołoży wszelkich starań, aby użyć 24 GB pamięci. Wówczas SQL Server i system operacyjny walczą o zasoby i zawsze spowoduje to słabą wydajność.
Po ustawieniu
max server memory
limitu konfiguracji ograniczane jest, ile SQL Server może przydzielić dla puli buforów (praktycznie tam, gdzie przechowuje strony danych i pamięć podręczną procedur). Istnieją inne moduły pamięci w SQL Server, więc dla konkretnej wersji (2008 R2 i niższych),max server memory
po prostu kontroluje pulę buforów. Ale zawsze będzie to największy konsument pamięci.Dokumentacja TechNet dotycząca wpływu minimalnej i maksymalnej pamięci serwera
Jeśli chodzi o pytanie, ile pamięci mam pozostawić dla systemu operacyjnego , jest to często dyskutowana metryka. To naprawdę wszystko zależy, głównie od tego, jakie inne procesy działają na serwerze . Pod warunkiem, że jest to naprawdę serwer dedykowany (i prawie nigdy tak nie jest). Chciałbym zobaczyć co najmniej 4 GB pamięci na system operacyjny (a nawet więcej na dużych urządzeniach). Ale co najważniejsze, monitoruj, ile jest nieużywanej pamięci. Bądź liberalny i daj SQL Serverowi więcej pamięci, jeśli zauważysz dużo dostępnej (można monitorować przez perfmon) i nieużywanej pamięci (oczywiście zawsze pozostawiając mały bufor na te narożne sytuacje).
źródło
Program SQL Server jest domyślnie przeznaczony do używania całej pamięci na serwerze. Powodem tego jest to, że SQL Server buforuje dane w bazie danych w pamięci RAM, aby mógł uzyskać dostęp do danych szybciej niż mógłby, gdyby musiał czytać dane z dysku za każdym razem, gdy użytkownik tego potrzebował. Gdybyśmy musieli chodzić na dyski za każdym razem, gdy SQL Server potrzebował tych samych danych w kółko, wymagania IO na dysku byłyby niesamowicie wysokie.
Zwykle zalecam pozostawienie około 4 gigabajtów pamięci RAM dla systemu Windows, ale tak naprawdę zależy to od ilości oprogramowania działającego na serwerze, używanych składników programu SQL Server (nie wszystkie są zgodne z tym ustawieniem) itp.
źródło
Działa to natychmiast, bez potrzeby ponownego uruchamiania SQL:
Pamięć serwera Opcje konfiguracji serwera
Użyj dwóch opcji pamięci serwera, minimalnej pamięci serwera i maksymalnej pamięci serwera , aby ponownie skonfigurować ilość pamięci (w megabajtach) zarządzaną przez SQL Server Memory Manager dla instancji SQL Server. Domyślnie SQL Server może dynamicznie zmieniać wymagania dotyczące pamięci w oparciu o dostępne zasoby systemowe.
Procedura konfiguracji stałej ilości pamięci Aby ustawić stałą ilość pamięci:
Użyj ustawień domyślnych, aby umożliwić programowi SQL Server dynamiczną zmianę wymagań dotyczących pamięci w oparciu o dostępne zasoby systemowe. Domyślne ustawienie minimalnej pamięci serwera to 0, a domyślne ustawienie maksymalnej pamięci serwera to 2147483647 megabajtów (MB).
Mam nadzieję, że to pomoże!
źródło
Jak powiedział Eric, musisz zarządzać pamięcią, aby zachować wolne miejsce na inne procesy. Aby uzyskać ogólne wyjaśnienie i kilka wskazówek, jak ustawić maksymalną pamięć, sprawdź post Jonathana Kehayiasa:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
Możesz zmodyfikować zalecenie, biorąc pod uwagę użycie serwera.
źródło
SQL Server wykorzysta dostępną pamięć RAM, chyba że ograniczysz użycie. Z reguły staram się pozostawić co najmniej 2 GB wolnego miejsca dla systemu operacyjnego, tj. Jeśli masz 64 GB fizycznej pamięci RAM na hoście, ogranicz SQL Server @ 62 GB.
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx
źródło