Szybkie spojrzenie na ilość pamięci RAM przydzielonej do programu SQL Server?

15

Dzięki SQL Server 2005 możesz spojrzeć na Menedżera zadań i przynajmniej pobieżnie sprawdzić, ile pamięci jest przydzielone do SQL Server.

W SQL Server 2008 rozmiar zestawu roboczego lub zatwierdzenia nigdy tak naprawdę nie przekracza 500 MB, nawet jeśli licznik perf SQLServer: Memory Manager / Total Server Memory (KB) wynosi 16 773 760.

Czy istnieje ustawienie, w którym faktycznie pokaże pamięć serwera w Menedżerze zadań? Czy może wynika to ze zmiany sposobu wykorzystania pamięci w programie SQL Server

AngryHacker
źródło

Odpowiedzi:

25

NIGDY, NIGDY nie ufaj Menedżerowi zadań, który powie ci, ile pamięci używa SQL Server (być może pamiętasz system 32-bitowy z bardzo małą ilością pamięci). Przestań używać Menedżera zadań dla tego okresu. Użyj licznika wydajności - możesz również wykonać kwerendę licznika wydajności za pomocą DMV:

SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';

Możesz zapisać to jako skrót do zapytania w Narzędzia> Opcje> Środowisko> Klawiatura> Skróty do zapytań i uzyskać dokładne wyniki w oknie zapytania znacznie szybciej niż uzyskiwanie niedokładnych wyników z Menedżera zadań.

Możesz również sprawdzić presję pamięci (i czy możesz coś z tym zrobić) za pomocą tych zapytań:

SELECT object_name, cntr_value
  FROM sys.dm_os_performance_counters
  WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';
Aaron Bertrand
źródło
EXEC sp_configure 'max server memory';również nie istnieje w SQL 2008.
AngryHacker
@AngryHacker Jasne, że tak (nazywa się, max server memory (MB)ale nie trzeba wpisywać całego tekstu ). Aby go zobaczyć, musisz przeczytać komunikat o błędzie informujący o tym, że jest to opcja zaawansowana, a następnie sp_configure 'show adv', 1; reconfigure with override;. Pamiętaj, że nie musisz 'show advanced options'tutaj wpisywać wszystkich .
Aaron Bertrand
6

Odpowiedź AaronaBertranda jest świetna. Oto wariant z nieco więcej informacji tutaj

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;

Również po dobry blog o tym, dlaczego TaskManager nie jest do tego zadania tutaj .

Aby uzyskać większą wydajność i magię DMV, nie możesz przejść obok blogu SQL Performance Glenna Berry'ego

Rory
źródło