Saturday, May 29, 2021

Check Memory pressure on the server

When working with SQL Server, monitoring memory is crucial for optimal performance. These queries provide valuable insights into your system's memory state, helping you identify and address potential memory pressure issues.

Checking for Process Memory Low Conditions

The following query helps determine if your SQL Server process is experiencing low physical or virtual memory. Ideally, both values should be zero.

SELECT m.process_physical_memory_low
 ,m.process_virtual_memory_low
FROM sys.dm_os_process_memory m --both should be zero

Current Memory Usage by SQL Server Process

This query displays the amount of physical memory currently being used by your SQL Server instance in megabytes (MB).

SELECT m.physical_memory_in_use_kb / 1024 [Mem Used in MB]
FROM sys.dm_os_process_memory m

Overall System Memory Status

Gain a comprehensive overview of your system's memory, including total physical memory, available physical memory, and the current system memory state. The `system_memory_state_desc` provides a quick indicator of memory health.

SELECT m.total_physical_memory_kb / 1024 [Mem in MB]
 ,m.available_physical_memory_kb / 1024 [Available Mem MB]
 ,m.system_memory_state_desc
FROM sys.dm_os_sys_memory m

Committed Memory Information

Understand how much memory has been committed by the operating system to SQL Server and the target memory for the instance.

SELECT m.committed_kb / 1024 [Committed in MB]
 ,m.committed_target_kb / 1024 [Target Mem MB]
FROM sys.dm_os_sys_info m

Possible System Memory State Descriptions:

  • Available physical memory is high: Your system has ample free physical memory.
  • Physical memory usage is steady: Memory usage is stable, with no significant fluctuations.
  • Available physical memory is low: Your system is running low on available physical memory.
  • Available physical memory is running low: A critical state indicating very little free physical memory.
  • Physical memory state is transitioning: The system's memory state is currently changing.

Detailed OS Memory Information

This query provides more detailed insights into your operating system's memory, including page file usage and system cache. Ideally, `System Memory State` should be "Available physical memory is high" for optimal performance.

SELECT total_physical_memory_kb/1024 AS [Total Memory (MB)],
       available_physical_memory_kb/1024 AS [Available Memory (MB)],
       total_page_file_kb/1024 AS [Total Page File (MB)],
       available_page_file_kb/1024 AS [Available Page File (MB)],
       system_cache_kb/1024 AS [System Cache (MB)],
       system_memory_state_desc AS [System Memory State] --should be "Available physical memory is high"
FROM sys.dm_os_sys_memory WITH (NOLOCK) OPTION (RECOMPILE);

Further Reading and Resources:

Popular Posts