Dlaczego SQL Server zużywa więcej pamięci serwera?


36

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


3
Jak ustaliłeś, że użycie pamięci RAM przez program SQL Server jest źródłem wąskiego gardła? Powolność w czym? Jeśli już, SQL Server powinien być bardziej wydajny, jeśli używa jak największej ilości pamięci RAM (lub nawet więcej, niż się spodziewasz lub chcesz). A jeśli masz inne aplikacje na serwerze, które cierpią, ponieważ SQL Server używa pamięci (tak jak to zostało zaprojektowane), przenieś je na inny serwer .
Aaron Bertrand

Użyłem tu metody lucidica.com/help/got-sql-eating-up-ram Daj mi znać, czy to pomogło :) Pozdrawiam, Nikita.
Nikita Kosousov

Odpowiedzi:


48

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 memorylimitu 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 memorypo 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

Opcje konfiguracji minimalnej pamięci serwera i maksymalnej pamięci serwera określają górne i dolne limity ilości pamięci używanej przez pulę buforów aparatu bazy danych Microsoft SQL Server.

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).


11

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.


6

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:

  1. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer i wybierz Właściwości.
  2. Kliknij węzeł Pamięć.
  3. W obszarze Opcje pamięci serwera wprowadź żądaną wartość dla Minimalna pamięć serwera i Maksymalna pamięć serwera.

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!



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.