sys.dm_exec_query_resource_semaphores (Transact-SQL)
返回 SQL Server 中有关当前查询资源信号量状态的信息。 sys.dm_exec_query_resource_semaphores 提供常规查询执行内存状态,并允许您确定系统是否可以访问足够的内存。 该视图补充了来自 sys.dm_os_memory_clerks 的内存信息,可提供完整的服务器内存状态图。 sys.dm_exec_query_resource_semaphores 针对常规资源信号量返回一行信息,并针对小型查询资源信号量返回另外一行信息。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
列名 |
数据类型 |
说明 |
---|---|---|
resource_semaphore_id |
smallint |
资源信号量的非唯一 ID。 0 表示常规资源信号量,1 表示小型查询资源信号量。 |
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 未来版本的应用程序中。
数据库管理员可以使用资源调控器功能在多个资源池之间分发服务器资源,最多可为 64 个池。 在 SQL Server 2012 和更高版本中,每个池都类似于一个小型的独立服务器实例并且要求 2 个信号量。