Almacén de consultas en réplicas secundarias

SQL Server 2022 (16.x)

La característica de Almacén de consultas para réplicas secundarias habilita la misma funcionalidad del Almacén de consultas en las cargas de trabajo de réplicas secundarias que hay disponibles para las réplicas principales. Cuando se habilita el Almacén de consultas para réplicas secundarias, las réplicas envían la información de ejecución de consultas que normalmente se almacenaría en el Almacén de consultas de la réplica principal. A continuación, la réplica principal conserva los datos en el disco dentro de su propio Almacén de consultas. Básicamente, hay un Almacén de consultas compartido entre la réplica principal y todas las secundarias. El Almacén de consultas existe en la réplica principal y almacena los datos de todas las réplicas en un mismo lugar. Actualmente, el almacén de consultas para réplicas secundarias está disponible con instancias de SQL Server 2022 (16.x) configuradas en grupos de disponibilidad.

Importante

El almacén de consultas para réplicas secundarias es una función en Vista previa. No está pensado para implementaciones de producción. Consulte: Notas de la versión de SQL Server 2022 (16.0).

Es necesario activar la marca de seguimiento 12606 antes de poder activar el Almacén de consultas para las réplicas secundarias. Para activar las marcas de seguimiento:

  1. En Windows, inicie el Administrador de configuración de SQL Server.
  2. En la lista de Servicios SQL Server, haga clic con el botón derecho en el servicio de instancia de SQL Server para su instancia de SQL Server 2022 (16.x). Seleccionar Propiedades.
  3. Seleccione la pestaña Parámetros de inicio. En el campo Especificar un parámetro de inicio:, agregue los valores: -T12606 y seleccione Agregar.
  4. El servicio de instancia de SQL Server debe reiniciarse para que los cambios entren en vigor.

Activación del Almacén de consultas en réplicas secundarias

Antes de usar el almacén de consultas para réplicas secundarias en una instancia de SQL Server, debe tener un grupo de disponibilidad Always On. A continuación, habilite el almacén de consultas para las réplicas secundarias mediante las opciones de ALTER DATABASE SET (Transact-SQL).

Si el almacén de consultas aún no está habilitado y en modo READ_WRITE en la réplica principal, debe habilitarlo antes de continuar. Ejecute lo siguiente para cada base de datos deseada en la réplica principal:

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

Para habilitar el almacén de consultas en todas las réplicas secundarias, conéctese a la réplica principal y ejecute lo siguiente para cada base de datos deseada. Actualmente, cuando se activa el Almacén de consultas para réplicas secundarias, se activa para todas las réplicas secundarias.

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

Para desactivar el almacén de consultas en todas las réplicas secundarias, conéctese a la réplica principal y ejecute lo siguiente para cada base de datos deseada:

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

Puede validar que el almacén de consultas está habilitado en una réplica secundaria conectándose a la base de datos en la réplica secundaria y ejecutando lo siguiente:

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

Los siguientes resultados de ejemplo de la consulta sys.database_query_store_options indican que el almacén de consultas está en estado READ_CAPTURE_SECONDARY para el secundario. El readonly_reason de 8 indica que la consulta se ejecutó contra una réplica secundaria. Estos resultados indican que el Almacén de consultas se ha habilitado correctamente en la réplica secundaria.

desired_state desired_state_desc actual_state actual_state_desc readonly_reason
4 READ_CAPTURE_SECONDARY 4 READ_CAPTURE_SECONDARY 8

Una vez habilitado, puede usar sys.query_store_replicas para verificar el mantenimiento del almacén de consultas en la réplica secundaria.

Para deshabilitar el Almacén de consultas para réplicas secundarias, conéctese a la base de datos en la réplica principal y ejecute el código siguiente:

ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO

Conjuntos de réplicas

Actualmente, cuando se activa el Almacén de consultas para réplicas secundarias, se activa para todas las réplicas secundarias.

Un conjunto de réplicas se define como todas las réplicas sin nombre que comparten un rol (primario, secundario, geosecundario, geoprimario), o como una réplica individual con nombre. Los datos almacenados sobre las consultas se pueden analizar como cargas de trabajo en conjuntos de réplicas. El Almacén de consultas para réplicas proporciona la capacidad de supervisar y ajustar el rendimiento de las cargas de trabajo únicas de solo lectura que puedan ejecutarse en réplicas secundarias.

Consideraciones de rendimiento para el Almacén de consultas en réplicas secundarias

El canal utilizado por las réplicas secundarias para enviar información de consulta a la réplica principal es el mismo canal que se usa para mantener actualizadas las réplicas secundarias. Los datos se almacenan en las mismas tablas de la réplica principal que el Almacén de consultas usa para las consultas ejecutadas en la réplica principal, lo que hace que aumente el tamaño del Almacén de consultas.

Por lo tanto, cuando un sistema está bajo una carga significativa, es posible que observe una ralentización debido a la sobrecarga del canal. Además, los mismos problemas de captura de consultas ad hoc que existen para el Almacén de consultas ahora continuarán para las cargas de trabajo que se ejecuten en réplicas secundarias. Obtenga más información sobre la Conservación de los datos más relevantes en el Almacén de consultas.

Consulte también

Pasos siguientes