sys.dm_os_memory_clerks
返回 SQL Server 实例中当前处于活动状态的全部内存 Clerk 的集合。
列名 |
数据类型 |
说明 |
---|---|---|
memory_clerk_address |
varbinary(8) |
内存 Clerk 的唯一内存地址。这是主键列。不可为空值。 |
type |
nvarchar(60) |
内存 Clerk 的类型。每个 Clerk 都具有特定类型,例如,CLR Clerks MEMORYCLERK_SQLCLR。不可为空值。 |
name |
nvarchar(256) |
在内部为此内存 Clerk 分配的名称。每个组件可拥有多个特定类型的内存 Clerk。组件可选择使用特定名称来标识相同类型的内存 Clerk。不可为空值。 |
memory_node_id |
smallint |
内存节点的 ID。不可为空值。 |
single_pages_kb |
bigint |
分配的单页内存量 (KB)。这是使用内存节点的单页分配器分配的内存量。此单页分配器直接从缓冲池盗用页。不可为空值。 |
multi_pages_kb |
bigint |
分配的多页内存量 (KB)。这是使用内存节点的多页分配器分配的内存量。此内存在缓冲池外面分配,利用了内存节点虚拟分配器的优势。不可为空值。 |
virtual_memory_reserved_kb |
bigint |
内存 Clerk 保留的虚拟内存量。这是由使用此 Clerk 的组件直接保留的内存量。在多数情况下,只有缓冲池通过使用其内存 Clerk 来直接保留虚拟地址空间。不可为空值。 |
virtual_memory_committed_kb |
bigint |
内存 Clerk 提交的虚拟内存量。这是 Clerk 提交的内存量。提交的内存量应始终小于保留的内存量。不可为 Null 值。 |
awe_allocated_kb |
bigint |
内存 Clerk 使用地址窗口化扩展插件 (AWE) 分配的内存量。在 SQL Server 中,只有缓冲池 Clerk (MEMORYCLERK_SQLBUFFERPOOL) 使用此机制,且仅在已启用 AWE 时使用。不可为空值。 |
shared_memory_reserved_kb |
bigint |
内存 Clerk 保留的共享内存量。保留以供共享内存和文件映射使用的内存量。不可为空值。 |
shared_memory_committed_kb |
bigint |
内存 Clerk 提交的共享内存量。不可为空值。 |
page_size_bytes |
bigint |
可供内存 Clerk 分配的页大小。仅支持 8192 字节这一大小。不可为空值。 |
page_allocator_address |
varbinary(8) |
页分配器的地址。此地址对于内存 Clerk 唯一,且可在 sys.dm_os_memory_objects 中使用,以查找绑定到此 Clerk 的内存对象。不可为空值。 |
host_address |
varbinary(8) |
此内存 Clerk 的主机的内存地址。有关详细信息,请参阅 sys.dm_os_hosts。Microsoft SQL Server Native Client 等组件通过宿主接口访问 SQL Server 内存资源。 0x00000000 = 属于 SQL Server 的内存 Clerk。 不可为空值。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
注释
SQL Server 内存管理器由一个三层的层次结构组成。该层次结构的底层为内存节点。下一层由内存 Clerk、内存缓存和内存池组成。最后一层由内存对象组成。这些对象通常用于在 SQL Server 实例中分配内存。
内存节点提供低级分配器的界面和实现。在 SQL Server 中,只有内存 Clerk 可访问内存节点。内存 Clerk 访问内存节点界面以分配内存。内存节点还会跟踪 Clerk 分配的内存以进行诊断。分配大量内存的每个组件,都必须使用 Clerk 界面来创建其自己的内存 Clerk 并分配其全部内存。各组件会在 SQL Server 启动时创建其相应的 Clerk。