sys.dm_os_memory_objects (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)База данных SQL в Microsoft Fabric

Возвращает объекты памяти, выделенные в настоящее время SQL Server. Вы можете использовать sys.dm_os_memory_objects для анализа использования памяти и выявления возможных утечек памяти.

Note

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_memory_objects. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Название столбца Тип данных Description
memory_object_address varbinary(8) Адрес объекта памяти. Не допускает значение NULL.
parent_address varbinary(8) Адрес родительского объекта памяти. Может принимать значение NULL.
pages_allocated_count int Применимо: SQL Server 2008 (10.0.x) до SQL Server 2008 R2 (10.50.x).

Число страниц, выделенных данным объектом. Не допускает значение NULL.
pages_in_bytes bigint Область применения: SQL Server 2012 (11.x) и более поздних версий.

Объем памяти в байтах, выделяемый этим экземпляром объекта памяти. Не допускает значение NULL.
creation_options int Только для внутреннего применения. Может принимать значение NULL.
bytes_used bigint Только для внутреннего применения. Может принимать значение NULL.
тип nvarchar(60) Тип объекта памяти.

Указывает компонент, которому принадлежит данный объект памяти, либо функцию объекта памяти. Может принимать значение NULL.
name varchar(128) Только для внутреннего применения. Допускает значение NULL.
memory_node_id smallint Идентификатор узла памяти, используемого данным объектом памяти. Не допускает значение NULL.
creation_time datetime Только для внутреннего применения. Может принимать значение NULL.
max_pages_allocated_count int Применимо: SQL Server 2008 (10.0.x) до SQL Server 2008 R2 (10.50.x).

Максимальное число страниц, выделенных данным объектом. Не допускает значение NULL.
page_size_in_bytes int Область применения: SQL Server 2012 (11.x) и более поздних версий.

Размер страниц в байтах, выделенных данным объектом. Не допускает значение NULL.
max_pages_in_bytes bigint Максимальный объем памяти, который когда-либо использовался данным объектом памяти. Не допускает значение NULL.
page_allocator_address varbinary(8) Адрес средства выделения страниц в памяти. Не допускает значение NULL. Для получения дополнительной информации см. sys.dm_os_memory_clerks (Transact-SQL).
creation_stack_address varbinary(8) Только для внутреннего применения. Может принимать значение NULL.
sequence_num int Только для внутреннего применения. Может принимать значение NULL.
partition_type int Область применения: SQL Server 2016 (13.x) и более поздних версий.

Тип секции:

0 — объект памяти, не допускающий секционирование

1 . Объект памяти с секционированием, в настоящее время не секционирован

2 . Секционируемый объект памяти, секционируемый узлом NUMA. В среде с одним узлом NUMA это эквивалентно 1.

3 . Секционируемый объект памяти, секционируемый по ЦП.
contention_factor real Область применения: SQL Server 2016 (13.x) и более поздних версий.

Значение, указывающее состязание в этом объекте памяти, при этом значение 0 не имеет значения. Значение обновляется всякий раз, когда указанное количество выделений памяти было отражено в течение этого периода. Применяется только к объектам памяти, безопасным для потоков.
waiting_tasks_count bigint Область применения: SQL Server 2016 (13.x) и более поздних версий.

Количество ожиданий для этого объекта памяти. Этот счетчик увеличивается при каждом выделении памяти из этого объекта памяти. Увеличение — это количество задач, ожидающих доступа к этому объекту памяти. Применяется только к объектам памяти, безопасным для потоков. Это лучшее значение без гарантии правильности.
exclusive_access_count bigint Область применения: SQL Server 2016 (13.x) и более поздних версий.

Указывает, как часто доступ к этому объекту памяти был доступен исключительно. Применяется только к объектам памяти, безопасным для потоков. Это лучшее значение без гарантии правильности.
pdw_node_id int применимо к: Azure Synapse Analytics, система платформы аналитики (PDW)

Идентификатор узла, на который находится это распределение.

partition_type, contention_factor, waiting_tasks_count и exclusive_access_count еще не реализованы в База данных SQL.

Permissions

Для SQL Server и Управляемого экземпляра SQL требуется разрешение VIEW SERVER STATE.

В базе данных SQL базовые, S0и S1 целей службы, а также для баз данных в эластичных пулах, требуется учетная запись администратора сервера сервера, учетная запись администратора Microsoft Entra или членство в роли сервера ##MS_ServerStateReader##. Для всех остальных целей службы базы данных SQL требуется разрешение VIEW DATABASE STATE на базу данных или членство в роли сервера ##MS_ServerStateReader##.

Разрешения для SQL Server 2022 и более поздних версий

Требуется VIEW разрешение на состояние производительности сервера на сервере.

Замечания

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

Стандартный размер страницы для объекта памяти равен 8 КБ. Однако для добавочных объектов памяти размеры страниц могут варьироваться от 512 байт до 8 килобайт.

Note

Размер страницы не означает максимально возможный размер выделенной памяти. Он представляет собой гранулярность выделения страниц, поддерживаемую средством выделения и реализуемую клерком памяти. От объекта памяти можно запросить выделение объема свыше 8 килобайт.

Examples

В следующем примере возвращается объем памяти, выделенный каждым типом объектов памяти.

SELECT SUM (pages_in_bytes) as 'Bytes Used', type   
FROM sys.dm_os_memory_objects  
GROUP BY type   
ORDER BY 'Bytes Used' DESC;  
GO