Se um plano for forçado no primário em um Grupo de Disponibilidade, ele será aplicado a consultas executadas em um secundário?
Estou procurando respostas que cubram as duas possibilidades de forçar o plano:
Eu li o seguinte que sugere que os planos forçados de QS não são transferidos, mas não consigo encontrar nada oficial na documentação ou nada sobre guias de planos.
- Repositório de consultas e grupos de disponibilidade por Erin Stellato
- Comportamento do plano forçado do armazenamento de dados de consulta no secundário legível AlwaysOn por Vikas Rana
Evidência conclusiva de forçamento seria a presença de Use Plan
ou PlanGuideName
e PlanGuideDB
propriedades no plano de execução do secundário.
A imposição do plano do Repositório de Consultas NÃO afeta as consultas no secundário
Usar o Repositório de Consultas para forçar um plano no primário certamente parece forçar o plano no secundário.
Tentei executar uma consulta em um servidor sem produção e, em seguida, liberar o repositório de consultas
sp_query_store_flush_db
(o que era necessário para sincronizar os dados com o secundário). Aqui está o secundário à esquerda (observe o aviso circulado sobre ser "somente leitura") e o primário à direita:Agora, clicarei em "Forçar Plano" à direita e atualizarei as duas visualizações:
Portanto, o "forçar" pelo menos foi transferido para as tabelas do Repositório de Consultas subjacentes. Isso faz sentido, uma vez que os artigos citados no OP afirmam que a imposição de consulta deve permanecer em vigor após um failover:
Mas o comportamento forçado realmente ocorre? Agora vou executar a mesma consulta em ambos os servidores. No primário, como esperado, o atributo "UsePlan" está lá no XML do plano:
E na interface do usuário:
No secundário (observe o nome do servidor diferente), o plano não foi forçado . Aqui está o mesmo snippet XML do plano:
Os guias de plano NÃO afetam as consultas no secundário
Criei um guia de plano no primário usando este código (os nomes das tabelas foram alterados para proteger os inocentes):
O guia do plano foi, obviamente, eficaz no primário, conforme evidenciado pelo plano de execução:
Eu confirmei neste ponto que o guia de plano foi replicado para o secundário.
Executando a mesma consulta no secundário, o plano de execução está sem todos os sinais de ser forçado por um guia de plano: