sys.dm_os_memory_clerks (Transact-SQL)
返回 SQL Server 实例中当前处于活动状态的全部内存分配器的集合。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
列名 |
数据类型 |
说明 |
|
---|---|---|---|
memory_clerk_address |
varbinary(8) |
指定内存分配器的唯一内存地址。 这是主键列。 不可为 Null。 |
|
类型 |
nvarchar(60) |
指定内存分配器的类型。 每个分配器都具有特定类型,例如,CLR Clerks MEMORYCLERK_SQLCLR。 不可为 Null。 |
|
name |
nvarchar(256) |
指定在内部为此内存分配器分配的名称。 一个组件可拥有多个特定类型的内存分配器。 组件可选择使用特定名称来标识相同类型的内存分配器。 不可为 Null。 |
|
memory_node_id |
smallint |
指定内存节点的 ID。 不可为 Null。 |
|
single_pages_kb |
bigint |
|
|
pages_kb |
bigint |
指定为此内存分配器分配的页内存量 (KB)。 不可为 Null。
|
|
multi_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 操作系统相关的动态管理视图 (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)