Memory Clerks in SQL Server


  • Whenever a memory consumer wants to allocate memory to SQL Server, then it has to go through a memory clerk instead of going directly into the memory node.
  • There are general memory clerks like MEMORYCLERK_SQLGENERAL, but any component is required to allocate significant amounts, which will be written to create and use their own memory clerk.
  • we can say that memory clerks are consumers of memory.
  • For example, the buffer pool has its own memory clerk (MEMORYCLERK_SQLBUFFERPOOL), as does the query plan (MEMORYCLERK_SQLQUERYPLAN), which makes troubleshooting very easy because you can see the memory allocation made by each clerk and see who having what’s.
  • we can find and see the details of all the memory clerks in SQL Server using the sys.dm_os_memory_clerks DMV.

Below Script provides the details about memory clerks in SQL Server:-

SELECT [type],
memory_node_id,
pages_kb,
virtual_memory_reserved_kb,
virtual_memory_committed_kb,
awe_allocated_kb
FROM sys.dm_os_memory_clerks
ORDER BY virtual_memory_reserved_kb DESC;

Leave a Reply

Your email address will not be published. Required fields are marked *