## Kedy použiť Pri podozrení na memory pressure, RESOURCE_SEMAPHORE alebo pred zmenou max server memory. ## Ako čítať výsledok SQL Server si prirodzene berie pamäť až po `max server memory` – vysoké využitie samo osebe nie je únik. Pozornosť si zaslúži `process_physical_memory_low = 1` alebo `system_memory_state_desc` hlásiaci low memory. > [!WARNING] > Metriky OS a procesu sa počítajú inak. Prehľad nenahrádza analýzu memory grants a plánov. **Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`). **Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022 ## Súvisiace recepty - [Memory grants](script.php?id=19&s=memory-grants-kto-caka-na-pamat-resource-semaphore)
Skript
Pamäť SQL Servera a OS – rýchly prehľad
RAM operačného systému, pamäť procesu SQL Servera, signály nedostatku pamäte a najväčšie memory clerks.
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Pamäť SQL Servera a OS – rýchly prehľad
Účel: RAM operačného systému, pamäť procesu SQL Servera, signály nedostatku pamäte a najväčšie memory clerks.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
SELECT CAST(os.total_physical_memory_kb / 1024.0 AS decimal(18,1)) AS os_total_mb,
CAST(os.available_physical_memory_kb / 1024.0 AS decimal(18,1)) AS os_available_mb,
os.system_memory_state_desc,
CAST(p.physical_memory_in_use_kb / 1024.0 AS decimal(18,1)) AS sql_process_in_use_mb,
p.memory_utilization_percentage AS sql_process_memory_utilization_pct,
p.process_physical_memory_low,
p.process_virtual_memory_low
FROM sys.dm_os_sys_memory AS os
CROSS JOIN sys.dm_os_process_memory AS p;
-- jeden clerk má riadok za každý NUMA uzol, preto súčet podľa typu
SELECT TOP (20)
type AS memory_clerk_type,
CAST(SUM(pages_kb) / 1024.0 AS decimal(18,1)) AS pages_mb
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY SUM(pages_kb) DESC;