可读辅助数据库查询存储

SQL Server 2022 (16.x)

可读辅助副本的查询存储功能使可用于主要副本的查询存储功能同样适用于辅助副本的工作负载。 启用辅助副本的查询存储后,副本会将通常存储在查询存储中的查询执行信息发送回主副本。 然后,主要副本将数据持久化到其自己的查询存储中的磁盘。 从本质上讲,主要副本和所有次要副本之间共享了一个查询存储。 查询存储存在于主副本上,并将所有副本的数据存储在一起。 目前,在可用性组中配置的 SQL Server 2022(16.x)实例上已经可以使用用于辅助副本的查询存储功能。

注解

可读辅助数据库查询存储是一项 预览 功能。 它不适用于生产部署。 有关详细信息,请参阅 SQL Server 2022 发行说明

必须先启用跟踪标志 12606,然后才能为可读辅助数据库启用查询存储。 启用 跟踪标志

  1. 在 Windows 中,启动 SQL Server Configuration Manager

  2. SQL Server 服务列表中,右键单击 SQL Server 2022 (16.x) 实例的 SQL Server 实例服务。 选择 属性

  3. 选择“ 开始参数 ”选项卡。在 “指定启动参数: ”字段中,添加值: -T12606 并选择“ 添加”。

  4. 必须先重启 SQL Server 实例服务,然后更改才会生效。

注释

从 SQL Server 2025 (17.x) 预览版开始,可读辅助文件的查询存储未处于预览状态,并且默认启用。 不再需要跟踪标记 12606 即可使用查询存储的可读副本功能。 在 SQL Server 2025(17.x)预览版中启用跟踪标志 12606 会禁用可读辅助数据库的查询存储功能。

为可读副本启用查询存储

在 SQL Server 实例上使用查询存储进行可读辅助数据库之前,需要具有 AlwaysOn 可用性组。 然后,使用 ALTER DATABASE SET 选项为可读辅助数据库启用查询存储。

如果查询存储尚未启用并在主副本上处于 READ_WRITE 模式,则必须在继续之前启用它。 对主副本上的每个所需数据库执行以下命令:

ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );

若要在所有可读辅助数据库上启用查询存储,请连接到主副本,并针对每个所需数据库执行以下命令。 目前,如果启用了可读辅助副本的查询存储,则会为所有辅助副本启用它。

ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO

若要在所有次要副本上禁用查询存储,请连接到主副本,并针对每个所需数据库执行以下命令:

ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO

可以通过连接到辅助副本上的数据库并执行以下内容来验证是否在辅助副本上启用了查询存储:

SELECT desired_state,
       desired_state_desc,
       actual_state,
       actual_state_desc,
       readonly_reason
FROM sys.database_query_store_options;
GO

来自查询 sys.database_query_store_options 的以下示例结果指示查询存储处于辅助数据库的READ_CAPTURE_SECONDARY状态。 readonly_reason指示查询是在次要副本上运行的8。 这些结果表明查询存储已在次要副本上成功启用。

期望状态 期望状态说明 实际状态 实际状态描述 只读原因
4 捕获读取_次要 4 读取_捕获_二级 8

启用后,可以使用 sys.query_store_replicas 来验证辅助副本上的查询存储的运行状况。

若要禁用可读副本的查询存储,请连接到主副本上的数据库并运行以下代码:

ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO

副本集

目前,如果启用了可读辅助数据库的查询存储,则会为所有次要副本启用它。

副本集定义为共享角色的所有未命名副本(主要副本、辅助副本、异地辅助副本、异地主副本)或作为单个命名副本。 可以基于副本集将存储有关查询的数据分析为工作负荷。 针对副本的查询存储提供了监视和调整可能在次要副本上执行的任何特定只读工作负荷性能的功能。

可读次级副本的查询存储性能注意事项

辅助副本用于将查询信息发送回主副本的通道是用于使辅助副本保持最新状态的同一通道。 数据存储在主副本上用于执行查询的同一个查询存储表中,这会导致查询存储的大小增长。

因此,当系统负载过大时,你可能会注意到由于通道过载而速度变慢。 此外,目前查询存储中存在的同一临时查询捕获问题将继续影响在次要副本上运行的工作负荷。 详细了解如何在 查询存储中保留最相关的数据