sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)
适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例
返回用于限制并发查询优化的资源信号灯的当前状态。
列 | 类型 | 描述 |
---|---|---|
pool_id | int | Resource Governor下的资源池 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 权限。
SQL Server 2022 及更高版本的权限
需要对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。
注解
SQL Server使用分层网关方法来限制允许的并发编译数。 使用三个网关,包括小型、中型和大型网关。 网关有助于防止需要较大编译内存的使用者耗尽总体内存资源。
在网关上等待会导致编译延迟。 除了编译延迟外,受限制的请求还将具有关联的RESOURCE_SEMAPHORE_QUERY_COMPILE等待类型累积。 RESOURCE_SEMAPHORE_QUERY_COMPILE等待类型可能指示查询正在使用大量内存进行编译,并且内存已用尽,或者整体上有足够的可用内存,但特定网关中的可用单位已用尽。 sys.dm_exec_query_optimizer_memory_gateways的输出可用于排查内存不足的情况,无法编译查询执行计划。
示例
A. 查看有关资源信号灯的统计信息
此 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)
与执行有关的动态管理视图和函数 (Transact-SQL)
如何使用 DBCC MEMORYSTATUS 命令监视 SQL Server 2005 SQL Server2014 中RESOURCE_SEMAPHORE_QUERY_COMPILE大型查询编译等待的内存使用情况
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈