sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)
本文内容
适用于:SQL Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
返回用于减少并发查询优化的资源信号灯的当前状态。
列 | 类型 | 描述 |
---|---|---|
pool_id |
int | 资源调控器下的资源池 ID |
name |
sysname | 编译门名称(小型网关、中网关、大网关) |
max_count |
int | 并发编译的最大配置计数 |
active_count |
int | 此门中当前活动的编译计数 |
waiter_count |
int | 此门的服务员数 |
threshold_factor |
bigint | 定义查询优化使用的最大内存部分的阈值因子。 对于小型网关,threshold_factor指示一个查询的最大优化器内存使用量(以字节为单位),然后才能在小型网关中获取访问权限。 对于中型和大型网关,threshold_factor显示此门可用的服务器内存总量部分。 计算门的内存使用阈值时,它用作除数。 |
threshold |
bigint | 下一个阈值内存(以字节为单位)。 如果查询的内存消耗达到此阈值,则需要查询才能访问此网关。 如果不需要查询来获取对此网关的访问权限,-1 。 |
is_active |
bit | 是否需要查询才能传递当前门。 |
SQL Server 需要对服务器具有 VIEW SERVER STATE 权限。
Azure SQL 数据库需要数据库中的 VIEW DATABASE STATE 权限。
要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。
SQL Server 使用分层网关方法来减少允许的并发编译数。 使用三个网关,包括小型、中型和大网关。 网关有助于防止编译内存需求较大的使用者耗尽总体内存资源。
等待网关导致编译延迟。 除了编译延迟外,减少的请求还将具有关联的RESOURCE_SEMAPHORE_QUERY_COMPILE等待类型累积。 RESOURCE_SEMAPHORE_QUERY_COMPILE等待类型可能指示查询正在使用大量内存进行编译,并且内存已用尽。 或者,可能有足够的内存可用总体,但特定网关中的可用单位已用尽。
sys.dm_exec_query_optimizer_memory_gateways
的输出可用于排查内存不足无法编译查询执行计划的情况。
此 SQL Server 实例的当前优化器内存网关统计信息是什么?
SELECT [pool_id], [name], [max_count], [active_count],
[waiter_count], [threshold_factor], [threshold],
[is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;
- 系统动态管理视图
- 与执行有关的动态管理视图和函数 (Transact-SQL)
- 如何使用 DBCC MEMORYSTATUS 命令监视 SQL Server 2005 上的内存使用情况
- SQL Server 2014 中RESOURCE_SEMAPHORE_QUERY_COMPILE等待大型查询编译