sys.dm_exec_query_resource_semaphores
返回当前查询资源信号量的状态信息。sys.dm_exec_query_resource_semaphores 提供常规的查询执行内存状态,使您可以确定系统是否可以访问足够的内存。该视图补充了来自 sys.dm_os_memory_clerks 的内存信息,可提供完整的服务器内存状态图。sys.dm_exec_query_resource_semaphores 将针对常规资源信号量返回一行信息,并针对小型查询资源信号量返回另外一行信息。
列名 |
数据类型 |
说明 |
---|---|---|
resource_semaphore_id |
smallint |
资源信号量的非唯一 ID。0 表示常规资源信号量,1 表示小型查询资源信号量。
注意
此 ID 在早于 SQL Server 2008 的 SQL Server 版本中是唯一的。此更改会对故障排除查询执行造成影响。有关详细信息,请参阅本主题后面的“备注”部分。
|
target_memory_kb |
bigint |
授予使用的目标 (KB)。 |
max_target_memory_kb |
bigint |
最大潜在目标 (KB)。对于小型查询资源信号量,该值为 NULL。 |
total_memory_kb |
bigint |
资源信号量所持有的内存 (KB)。如果系统内存不足或频繁授予强制最小内存,该值可以大于 target_memory_kb 或 max_target_memory_kb 值。总内存是可用内存和被授予内存的和。 |
available_memory_kb |
bigint |
可用于新授予的内存 (KB)。 |
granted_memory_kb |
bigint |
授予的总内存 (KB)。 |
used_memory_kb |
bigint |
授予内存中实际使用的部分 (KB)。 |
grantee_count |
int |
内存授予得到满足的活动查询数。 |
waiter_count |
int |
等待内存授予得到满足的查询数。 |
timeout_error_count |
bigint |
自服务器启动以来的超时错误总数。对于小型查询资源信号量,该值为 NULL。 |
forced_grant_count |
bigint |
自服务器启动以来的强制最小内存授予总数。对于小型查询资源信号量,该值为 NULL。 |
pool_id |
int |
此资源信号量所属资源池的 ID。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
注释
如果查询使用的动态管理视图中包括 ORDER BY 或聚合,则可能增加内存占用,进而产生需进行故障排除的问题。
请使用 sys.dm_exec_query_resource_semaphores 进行故障排除,但不要将其加入使用 SQL Server 未来版本的应用程序中。
数据库管理员可以使用资源调控器功能在多个资源池之间分发服务器资源,最多可为 20 个池。在 SQL Server 2008 中,每个池都类似于一个小型的独立服务器实例并且要求 2 个信号量。从 sys.dm_exec_query_resource_semaphores 中返回的行数可比 SQL Server 2005 中返回的行数多 20 倍。