sys.dm_os_memory_clerks (Transact-SQL)

返回 SQL Server 实例中当前处于活动状态的全部内存分配器的集合。 

列名

数据类型

说明

memory_clerk_address

varbinary(8)

指定内存分配器的唯一内存地址。 这是主键列。 不可为 Null。

类型

nvarchar(60)

指定内存分配器的类型。 每个分配器都具有特定类型,例如,CLR Clerks MEMORYCLERK_SQLCLR。 不可为 Null。

name

nvarchar(256)

指定在内部为此内存分配器分配的名称。 一个组件可拥有多个特定类型的内存分配器。 组件可选择使用特定名称来标识相同类型的内存分配器。 不可为 Null。

memory_node_id

smallint

指定内存节点的 ID。 不可为 NULL。

pages_kb

bigint

指定为此内存分配器分配的页内存量 (KB)。 不可为 Null。

virtual_memory_reserved_kb

bigint

指定内存分配器保留的虚拟内存量。 不可为 Null。

virtual_memory_committed_kb

bigint

指定内存分配器提交的虚拟内存量。 提交的内存量应始终小于保留的内存量。 不可为 Null。

awe_allocated_kb

bigint

指定在物理内存中锁定且未由操作系统调出的内存量 (KB) 。 不可为 Null。

shared_memory_reserved_kb

bigint

指定内存分配器保留的共享内存量。 保留以供共享内存和文件映射使用的内存量。 不可为 Null。

shared_memory_committed_kb

bigint

指定内存分配器提交的共享内存量。 不可为 Null。

page_size_in_bytes

bigint

指定此内存分配器的页分配粒度。 不可为 Null。

page_allocator_address

varbinary(8)

指定页分配器的地址。 此地址对于内存分配器唯一,且可在 sys.dm_os_memory_objects 中使用,以查找绑定到此分配器的内存对象。 不可为 Null。

host_address

varbinary(8)

指定用于此内存分配器的主机的内存地址。 有关详细信息,请参阅 sys.dm_os_hosts (Transact-SQL)。 Microsoft SQL Server Native Client 等组件通过宿主接口访问 SQL Server 内存资源。

0x00000000 = 属于 SQL Server 的内存分配器。

不可为 Null。

权限

需要对服务器具有 VIEW SERVER STATE 权限。

注释

SQL Server 内存管理器由一个三层的层次结构组成。 该层次结构的底层为内存节点。 中间层由内存分配器、内存缓存和内存池组成。 顶层由内存对象组成。 这些对象通常用于在 SQL Server 实例中分配内存。

内存节点提供低级分配器的界面和实现。 在 SQL Server 中,只有内存内存分配器可访问内存节点。 内存分配器访问内存节点界面以分配内存。 内存节点还会跟踪 Clerk 分配的内存以进行诊断。 分配大量内存的每个组件,都必须使用分配器界面来创建其自己的内存分配器并分配其全部内存。 各组件会在 SQL Server 启动时频繁创建其相应的分配器。

兼容性支持

在 SQL Server 2012 中,以下列已重命名。

以前的列名

新列名

single_pages_kb

pages_kb

在 SQL Server 2012 中,列 multi_pages_kb 已删除。

请参阅

参考

动态管理视图和函数 (Transact-SQL)

与 SQL Server 操作系统相关的动态管理视图 (Transact-SQL)

sys.dm_os_sys_info (Transact-SQL)

sys.dm_exec_query_memory_grants (Transact-SQL)

sys.dm_exec_requests (Transact-SQL)

sys.dm_exec_query_plan (Transact-SQL)

sys.dm_exec_sql_text (Transact-SQL)