Skonfiguruj pamięć RAM dla SQL Server i NUMA

10

Przypadkowy administrator DB tutaj.

Pytanie:

Czy nadal ręcznie ograniczysz maksymalną pamięć RAM dla programu SQL Server, nawet jeśli jedynym celem tego serwera jest obsługa tylko silnika bazy danych SQL Server?

Mam system Microsoft Windows 2012 R2 Server, SQL Server 2012 Std, z 32 GB pamięci RAM.

Administrator stale loguje się do SQL Server, aby korzystać z jego konsoli i wszystkich innych.

Po drugie, w jaki sposób sprawdzasz, czy ten serwer Windows jest włączony NUMA?

volantis
źródło

Odpowiedzi:

9

Czy nadal ręcznie ograniczysz maksymalną pamięć RAM dla MSSQL, chociaż jedynym celem tego serwera jest obsługa tylko MSSQL?

To nieco dyskusyjny temat, biorąc pod uwagę, że masz tutaj SQL Server 2012. Jeśli zadałbyś to samo pytanie dotyczące programu SQL Server 2005/2008, który był w systemie Windows Server 2003/2008, zdecydowanie zalecam ustawienie maksymalnego limitu pamięci serwera z powodu błędów, które występowały w systemie operacyjnym Windows (2003/2008). Ale konfiguracja pamięci i wydajność systemu operacyjnego zmieniły się znacząco od SQL Server 2012 i Windows Server 2008/2012 r2 i dalej, jeśli zapytasz o moją opinię, You can leave max server memory configuration to default if you have enough RAM on system and you are just using database engine features.jeśli zapytasz inżynierów MS o to powiedzieliby również, że SQL Server jest dobrze zakodowany do zarządzania pamięcią przez sam, a jeśli masz system dedykowany tylko silnikowi bazy danych SQL, możesz pozostawić maksymalną pamięć serwera SQL Server na domyślną.

W każdym razie, jeśli nadal chcesz skonfigurować, możesz przeczytać Podobne pytania i odpowiedzi dotyczące tego wątku SE

Są sytuacje, w których wymagana jest maksymalna pamięć serwera. Opisałem to w tym wątku SE

Po drugie, w jaki sposób sprawdzasz, czy ten serwer Windows jest włączony NUMA?

Trochę wyszukiwania doprowadziłoby Cię do tego artykułu w Blogs.msdn . Ma różny obrazkowy opis, gdy SQL Server jest świadomy NUMA i używa go.

Shanky
źródło
2
Lubię używać tabeli Brenta Ozara do szybkiego odniesienia do ustawień pamięci dla ogólnych przypadków użycia.
LowlyDBA
3
Jest to oczywiście okazja do szybkiego odniesienia i działa jako punkt wyjścia dla wartości. Jestem pewien, że jeśli zapytasz go, powiedziałby, że musisz przyjrzeć się licznikom perfmon, aby osiągnąć optymalną wartość . Dlatego dodałem link SE na wypadek, gdyby OP chciał ustawić maksymalną pamięć serwera.
Shanky
2

SQL jest NUMAświadomy, więc możesz znaleźć NUMAinformacje za pomocą zapytania. Możesz również użyć tego zapytania, aby zobaczyć, ile NUMAmasz węzłów i do których procesorów i rdzeni są przypisane NUMA:

SELECT parent_node_id, scheduler_id, cpu_id
FROM sys.dm_os_schedulers WITH (NOLOCK) 
WHERE [status] = N'VISIBLE ONLINE';

Lub po prostu ile NUMA:

select COUNT(distinct Parent_node_id)
from sys.dm_os_schedulers
where [STATUS] = 'VISIBLE ONLINE'
    and Parent_node_ID < 64
hpk89
źródło
-2

Tak, należy ograniczyć maksymalną pamięć dla SQL Server, nawet jeśli serwer ma tylko jeden cel. W przeciwnym razie SQL Server może zacząć korzystać z pamięci. Sam system Windows musi działać poprawnie. Zazwyczaj pozostawia 1 GB -> 20% całkowitej pamięci RAM w systemie Windows, w zależności od potrzeb.

Konfiguracja NUMA serwera jest wyświetlana w Menedżerze zadań, wybierając proces, kliknij prawym przyciskiem myszy i wybierz Ustaw koligację. Monitor zasobów systemu Windows wyświetla również informacje NUMA.

Vemund Haga
źródło