Eu sou um desenvolvedor .Net. Eu tenho uma atualização de banco de dados chegando (do SQL Server 2005 para o SQL Server 2012). A equipe do banco de dados cuidará da migração. Mas eu vi postagens em fóruns dizendo que após a migração, as consultas estão demorando muito para serem executadas, embora a quantidade de dados e o número de usuários sejam quase os mesmos. E um dos principais motivos é a mudança execution plan
entre esses servidores. Referência: Problema de desempenho após a migração do SQL Server 2005 para 2012
Portanto, estou considerando a possibilidade de armazenar os planos de execução reais do meu próprio servidor de produção atual. No Oracle, pude encontrar um recurso para linha de base: -
No SQL Server, qual é a prática usual para conseguir isso?
Nota: eu me referi a criar uma linha de base para SQL Server , mas não diz nada sobre linha de baseexecution plan
Você apenas obteria os planos de execução para as consultas mais relevantes do cache do plano. Eu consultaria sys.dm_exec_query_stats e ingressaria em sys.dm_exec_query_plan e sys.dm_exec_sql_text para obter o plano e o texto da consulta, respectivamente. Em sys.dm_exec_query_stats , você pode obter consultas com o maior IO, CPU, contagem de execução etc. - o que for mais importante para você.
Olhando para o futuro, o SQL Server 2016 apresenta o Query Store:
Monitorando o desempenho usando o repositório de consultas
Consulte esta consulta de exemplo para obter esses planos de execução. Agora é ordenado pelo consumo de CPU:
Algumas outras dicas para migrar o SQL 2005 para 2012: