Repositório de Consultas para réplicas secundárias

SQL Server 2022 (16.x)

O recurso Repositório de Consultas para réplicas secundárias habilita a mesma funcionalidade do Repositório de Consultas em cargas de trabalho de réplicas secundárias disponíveis para réplicas primárias. Quando o Repositório de Consultas para réplicas secundárias está habilitado, as réplicas enviam as informações de execução de consultas que normalmente seriam armazenadas no Repositório de Consultas de volta para a réplica primária. Em seguida, a réplica primária persiste os dados em disco dentro do próprio Repositório de Consultas. Há basicamente um Repositório de Consultas compartilhado entre as réplicas primárias e todas as secundárias. O Repositório de Consultas existe na réplica primária e armazena dados para todas as réplicas juntas. Atualmente, o Repositório de Consultas para réplicas secundárias está disponível com instâncias do SQL Server 2022 (16.x) configuradas em grupos de disponibilidade.

Importante

O Repositório de Consultas para réplicas secundárias é uma versão prévia do recurso. Ele não se destina para implantações de produção. Consulte as Notas de versão do SQL Server 2022 (16.0).

É necessário habilitar o sinalizador de rastreamento 12606 antes de habilitar o Repositório de Consultas para réplicas secundárias. Para habilitar os sinalizadores de rastreamento:

  1. No Windows, inicie o SQL Server Configuration Manager.
  2. Na lista de Serviços SQL Server, clique com o botão direito do mouse no serviço de instância do SQL Server para sua instância do SQL Server 2022 (16.x). Selecione Propriedades.
  3. Selecione a guia Parâmetros de Início. No campo Especificar um parâmetro de inicialização, adicione os valores: -T12606 e selecione Adicionar.
  4. O serviço da instância do SQL Server deve ser reiniciado para que as alterações entrem em vigor.

Habilitar o Repositório de Consultas para réplicas secundárias

Antes de usar o Repositório de Consultas para réplicas secundárias em uma instância do SQL Server, você precisa ter um grupo de disponibilidade Always On. Em seguida, habilite o Repositório de Consultas para réplicas secundárias usando as Opções ALTER DATABASE SET (Transact-SQL).

Se o Repositório de Consultas ainda não estiver habilitado e no modo READ_WRITE na réplica primária, você deverá habilitá-lo antes de continuar. Execute o seguinte comando para cada banco de dados desejado na réplica primária:

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

Para habilitar o Repositório de Consultas para todas as réplicas secundárias, conecte-se à réplica primária e execute o comando a seguir para cada banco de dados desejado. Atualmente, quando o Repositório de Consultas para réplicas secundárias está habilitado, ele é habilitado para todas as réplicas secundárias.

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

Para desabilitar o Repositório de Consultas para todas as réplicas secundárias, conecte-se à réplica primária e execute o seguinte comando para cada banco de dados desejado:

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

Você pode validar se o Repositório de Consultas está habilitado em uma réplica secundária conectando-se ao banco de dados na réplica secundária e executando o seguinte:

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

Os resultados de exemplo a seguir da consulta sys.database_query_store_options indicam que o Repositório de Consultas está em um estado READ_CAPTURE_SECONDARY para a réplica secundária. O readonly_reason de 8 indica que a consulta foi executada em uma réplica secundária. Esses resultados indicam que Repositório de Consultas foi habilitado com êxito na réplica secundária.

desired_state desired_state_desc actual_state actual_state_desc readonly_reason
4 READ_CAPTURE_SECONDARY 4 READ_CAPTURE_SECONDARY 8

Depois de habilitado, você pode usar sys.query_store_replicas para verificar a integridade do Repositório de Consultas na réplica secundária.

Para desabilitar o Repositório de Consultas para réplicas secundárias, conecte-se ao banco de dados na réplica primária e execute o seguinte código:

ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO

Conjuntos de réplicas

Atualmente, quando o Repositório de Consultas para réplicas secundárias está habilitado, ele é habilitado para todas as réplicas secundárias.

Um conjunto de réplicas é definido como todas as réplicas sem nome que compartilham uma função (primária, secundária, geográfica secundária, geográfica primária) ou como sendo uma réplica nomeada individual. Os dados armazenados sobre consultas podem ser analisados como cargas de trabalho em relação a um conjunto de réplicas. O Repositório de Consultas para réplicas fornece a capacidade de monitorar e ajustar o desempenho de cargas de trabalho exclusivas somente leitura que possam estar em execução em réplicas secundárias.

Considerações de desempenho do Repositório de Consultas para réplicas secundárias

O canal usado pelas réplicas secundárias para enviar informações de consulta para a réplica primária é o mesmo usado para manter as réplicas secundárias atualizadas. Os dados são armazenados nas mesmas tabelas da réplica primária que o Repositório de Consultas usa para consultas executadas na réplica primária, o que aumenta o tamanho do Repositório de Consultas.

Com isso, quando um sistema está sob uma carga significativa, você pode observar alguma lentidão devido à sobrecarga do canal. Além disso, os mesmos problemas de captura de consulta ad hoc existentes para o Repositório de Consultas hoje continuarão para as cargas de trabalho executadas em réplicas secundárias. Saiba mais sobre como manter os dados mais relevantes no Repositório de Consultas.

Confira também

Próximas etapas