Поделиться через


sys.dm_os_memory_clerks

Возвращает набор всех клерков памяти, активных в данный момент в экземпляре SQL Server.

Имя столбца

Тип данных

Описание

memory_clerk_address

varbinary(8)

Уникальный адрес клерка памяти. Это столбец первичного ключа. Не допускает значения NULL.

type

nvarchar(60)

Тип клерка памяти. Каждый клерк принадлежит к определенному типу, такому как CLR Clerks MEMORYCLERK_SQLCLR. Не допускает значения NULL.

name

nvarchar(256)

Внутреннее имя, назначенное данному клерку памяти. Каждый компонент может иметь несколько клерков памяти определенного типа. Компонент может использовать определенные имена для идентификации клерков памяти одного и того же типа. Не допускает значения NULL.

memory_node_id

smallint

Идентификатор узла памяти. Не допускает значения NULL.

single_pages_kb

bigint

Объем выделенной одностраничной памяти в килобайтах (KБ). Это объем памяти, выделенной с помощью механизма распределения одиночных страниц узла памяти. Этот механизм распределения одиночных страниц захватывает страницы непосредственно из буферного пула. Не допускает значения NULL.

multi_pages_kb

bigint

Объем выделенной многостраничной памяти в КБ. Это объем памяти, выделенной с помощью механизма распределения множества страниц узлов памяти. Эта память выделяется вне буферного пула и использует преимущества виртуального механизма распределения узлов памяти. Не допускает значения NULL.

virtual_memory_reserved_kb

bigint

Объем виртуальной памяти, зарезервированной клерком памяти. Это объем памяти, зарезервированной непосредственно компонентом, использующим клерк. В большинстве ситуаций виртуальное адресное пространство резервируется непосредственно только буферным пулом, использующим свой клерк памяти. Не допускает значения NULL.

virtual_memory_committed_kb

bigint

Объем виртуальной памяти, зафиксированной клерком памяти. Это объем памяти, зафиксированной клерком. Объем зафиксированной памяти должен всегда быть меньше объема зарезервированной памяти. Не допускает значения NULL.

awe_allocated_kb

bigint

Объем памяти, выделенной клерком памяти с помощью расширений AWE. В SQL Server этот механизм используется только клерками буферного пула (MEMORYCLERK_SQLBUFFERPOOL) и только в случае, если расширения AWE включены. Не допускает значения NULL.

shared_memory_reserved_kb

bigint

Объем общей памяти, зарезервированной клерком памяти. Объем памяти, зарезервированной для использования при сопоставлении общей памяти и файлов. Не допускает значения NULL.

shared_memory_committed_kb

bigint

Объем общей памяти, зафиксированной клерком памяти. Не допускает значения NULL.

page_size_bytes

bigint

Размер страницы, которую может выделить клерк памяти. Поддерживается только один размер — 8 192 байт. Не допускает значения NULL.

page_allocator_address

varbinary(8)

Адрес механизма распределения страниц. Этот адрес уникален для клерка памяти и может использоваться в представлении sys.dm_os_memory_objects для поиска объектов памяти, связанных с данным клерком. Не допускает значения NULL.

host_address

varbinary(8)

Адрес памяти, по которому размещается данный клерк памяти. Дополнительные сведения см. в разделе sys.dm_os_hosts. Такие компоненты, как собственный клиент MicrosoftSQL Server, получают доступ к ресурсам памяти SQL Server через интерфейс узла.

0x00000000 = Клерк памяти принадлежит SQL Server.

Не допускает значения NULL.

Разрешения

Требует разрешения VIEW SERVER STATE на сервере.

Замечания

Диспетчер памяти SQL Server имеет трехуровневую иерархию. В нижней части иерархии располагаются узлы памяти. Следующий уровень содержит клерки, кэш и пулы памяти. Последний уровень содержит объекты памяти. Эти объекты обычно используются для выделения памяти в экземпляре SQL Server.

Узлы памяти обеспечивают интерфейс и реализацию низкоуровневых механизмов выделения. В пределах SQL Server доступ к узлам памяти имеют только клерки памяти. Клерки памяти получают доступ к интерфейсам узлов памяти для ее выделения. Узлы памяти также ведут слежение за выделяемой клерками памятью в целях диагностики. Каждый компонент, выделяющий значительный объем памяти, должен создать свой клерк памяти и выделить необходимую ему память с помощью интерфейсов клерка. Компоненты создают соответствующие им клерки во время запуска SQL Server.