Sdílet prostřednictvím


Monitorování využití paměti

platí pro:SQL Server

Pravidelně monitorujte instanci SQL Serveru a ověřte, že využití paměti spadá do typických rozsahů.

Konfigurace maximální paměti SQL Serveru

Ve výchozím nastavení může instance SQL Serveru v průběhu času spotřebovávat většinu dostupné paměti operačního systému Windows na serveru. Jakmile je paměť získána, nebude uvolněna, pokud se nezjistí zatížení paměti. Toto je úmyslné a neznamená to únik paměti v procesu SQL Serveru. Použijte možnost maximální paměti serveru k omezení velikosti paměti, kterou SQL Server může získat pro většinu svých použití. Další informace naleznete v Průvodce architekturou správy paměti.

V SQL Serveru na Linuxu nastavte limit paměti pomocí nástroje mssql-conf a memory.memorylimitmb.

Monitorování paměti operačního systému

Pokud chcete monitorovat stav nedostatku paměti, použijte následující čítače windows serveru. Mnoho čítačů paměti operačního systému lze dotazovat prostřednictvím zobrazení dynamické správy sys.dm_os_process_memory a sys.dm_os_sys_memory.

  • paměť: Dostupné bajty
    Tento čítač označuje, kolik bajtů paměti je aktuálně k dispozici pro použití procesy. Nízké hodnoty čítače dostupných bajtů můžou znamenat celkový nedostatek paměti operačního systému. Tuto hodnotu je možné dotazovat pomocí T-SQL pomocí sys.dm_os_sys_memory.available_physical_memory_kb.

  • Paměť : Stránky za sekundu
    Tento čítač označuje počet stránek, které byly načteny z disku kvůli pevným chybám stránek nebo zapsány na disk, aby se uvolnilo místo v pracovní sadě v důsledku chyb stránek. Vysoká míra pro čítač stránky/sek může znamenat nadměrné stránkování.

  • paměti: Chyby stránek za sekundu Tento čítač označuje míru výskytu chyb stránek pro všechny procesy, včetně systémových procesů. Nízká, ale nenulová rychlost stránkování na disk (a proto chyby stránky) je typická, i když má počítač dostatek dostupné paměti. Nástroj Microsoft Windows Virtual Memory Manager (VMM) přebírá stránky z SQL Serveru a dalších procesů při úpravě velikostí pracovních sad těchto procesů. Tato aktivita VMM má tendenci způsobovat chyby stránky.

  • Proces: Výpadky stránek za sekundu Tento čítač označuje míru výpadků stránek pro daný uživatelský proces. Monitorování procesu : Page Faults/sec ke stanovení, zda je aktivita disku způsobena stránkováním SQL Serveru. Pokud chcete zjistit, zda je příčinou nadměrné zátěže stránkování SQL Server nebo jiný proces, monitorujte instanci procesu SQL Serveru pomocí čítače Proces: Poruchy stránky/sekundu.

Další informace o řešení nadměrného stránkování najdete v dokumentaci k operačnímu systému.

Izolace paměti používané SQL Serverem

Chcete-li monitorovat využití paměti SYSTÉMU SQL Server, použijte následující čítače objektů SYSTÉMU SQL Server. Mnoho čítačů objektů SQL Serveru lze dotazovat prostřednictvím zobrazení dynamické správy sys.dm_os_performance_counters nebo sys.dm_os_process_memory.

SQL Server ve výchozím nastavení spravuje požadavky na paměť dynamicky na základě dostupných systémových prostředků. Pokud SQL Server potřebuje více paměti, dotazuje se operačního systému, aby zjistil, jestli je k dispozici volná fyzická paměť a používá dostupnou paměť. Pokud je pro operační systém nedostatek volné paměti, SQL Server uvolní paměť zpět do operačního systému, dokud se nezmírní stav nedostatku paměti, nebo dokud SQL Server nedosáhne minimální paměti serveru limitu. Můžete však přepsat možnost dynamického používání paměti pomocí minimální paměti serverua maximální paměti serveru možnosti konfigurace serveru. Další informace naleznete v tématu Možnosti paměti serveru.

Pokud chcete monitorovat množství paměti, kterou SQL Server používá, projděte si následující čítače výkonu:

  • SQL Server: Správce paměti: Celková paměť serveru (KB)
    Tento čítač označuje množství paměti operačního systému, které paměťový správce SQL Serveru aktuálně potvrdil pro SQL Server. Očekává se, že toto číslo bude růst podle požadavků skutečné aktivity a bude růst po spuštění SQL Serveru. Dotaz na tento čítač proveďte prostřednictvím zobrazení dynamické správy sys.dm_os_sys_info a sledujte sloupec committed_kb.

  • SQL Server: Memory Manager: Cílová paměť serveru (KB)
    Tento čítač označuje ideální velikost paměti, kterou MŮŽE SQL Server využívat na základě nedávné úlohy. Porovnejte celkové paměti serveru po určité době typické operace, abyste zjistili, jestli má SQL Server přidělenou požadovanou velikost paměti. Po typické operaci by celková paměť serveru a paměť cílového serveru měly být podobné. Pokud je celková paměť serveru výrazně nižší než paměti cílového serveru, může u instance SYSTÉMU SQL Server docházet k zatížení paměti. Během období po spuštění SQL Server se očekává, že celková paměť serveru bude nižší než cílová paměť serveru, protože celková paměť serveru roste. Dotazujte se na tento čítač pomocí zobrazení dynamické správy sys.dm_os_sys_info, přičemž sledujte sloupec committed_target_kb. Další informace a osvědčené postupy konfigurace paměti naleznete v tématu Možnosti konfigurace paměti serveru.

  • Proces : Pracovní sada
    Tento čítač označuje velikost fyzické paměti, kterou aktuálně používá proces podle operačního systému. Sledujte sqlservr.exe příklad tohoto čítače. Dotazujte se na tento čítač pomocí zobrazení dynamické správy sys.dm_os_process_memory a sledujte sloupec physical_memory_in_use_kb.

  • Proces : Privátní bajty
    Tento čítač označuje velikost paměti, kterou proces požadoval pro vlastní použití operačního systému. Prohlédněte si sqlservr.exe instanci tohoto čítače. Vzhledem k tomu, že tento čítač zahrnuje všechny přidělení paměti požadované sqlservr.exe, včetně těch, které nejsou omezeny možností maximální paměti serveru, může tento čítač hlásit hodnoty větší než možnost maximální paměti serveru.

  • SQL Server: Správce vyrovnávací paměti: Databázové stránky
    Tento čítač označuje počet stránek ve fondu vyrovnávací paměti s obsahem databáze. Nezahrnuje jinou paměť fondu bez vyrovnávací paměti v rámci procesu SQL Serveru. Dotazujte tento čítač pomocí zobrazení dynamické správy sys.dm_os_performance_counters.

  • SQL Serveru: Správce vyrovnávací paměti: Poměr přístupů do vyrovnávací paměti
    Tento čítač je specifický pro SQL Server. Žádoucí je poměr 90 nebo vyšší. Hodnota větší než 90 označuje, že více než 90 procent všech požadavků na data byla splněna z mezipaměti dat v paměti, aniž by bylo nutné číst z disku. Další informace o správci vyrovnávací paměti systému SQL Server naleznete v tématu objekt správce vyrovnávací paměti systému SQL Server. Pomocí dynamického zobrazení správy sys.dm_os_performance_counters se dotazujte na tento čítač.

  • SQL Serveru: Správce vyrovnávací paměti: Očekávaná délka životnosti stránky
    Tento čítač měří dobu v sekundách, po kterou nejstarší stránka zůstává ve fondu vyrovnávací paměti. U systémů, které používají architekturu NUMA, je to průměr ve všech uzlech NUMA. Vyšší, rostoucí hodnota je nejlepší. Náhlý pokles znamená významnou výměnu dat ve fondu vyrovnávacích pamětí, což naznačuje, že pracovní zátěž nemohla plně těžit z dat, která už jsou v paměti. Každý uzel NUMA má svůj vlastní uzel fondu vyrovnávací paměti. Na serverech s více než jedním uzlem NUMA zobrazte očekávanou délku životnosti stránek pro každý uzel fondu vyrovnávací paměti pomocí SQL Server: Uzel vyrovnávací paměti: Očekávaná délka životnosti stránky. Dotazujte se na tento čítač pomocí zobrazení dynamické správy sys.dm_os_performance_counters.

Příklady

Určení aktuálního přidělení paměti

Následující dotazy vrátí informace o aktuálně přidělené paměti.

SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024)  AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;

SELECT  
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,  
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_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;  

Určení aktuálního využití paměti SQL Serveru

Následující dotaz vrátí informace o aktuálním využití paměti SQL Serveru.

SELECT
sqlserver_start_time,
(committed_kb/1024) AS Total_Server_Memory_MB,
(committed_target_kb/1024)  AS Target_Server_Memory_MB
FROM sys.dm_os_sys_info;

Určení očekávané délky životnosti stránky

Následující dotaz používá sys.dm_os_performance_counters sledovat aktuální očekávanou délku životnosti stránky instance SQL Serveru hodnotu na celkové úrovni správce vyrovnávací paměti a na každé úrovni uzlu NUMA.

SELECT
CASE instance_name WHEN '' THEN 'Overall' ELSE instance_name END AS NUMA_Node, cntr_value AS PLE_s
FROM sys.dm_os_performance_counters    
WHERE counter_name = 'Page life expectancy';