Desempenho de migração: linha de base de desempenho do SQL Server para Instância Gerenciada de SQL do Azure
Aplica-se a: Instância Gerenciada de SQL do Azure
Crie uma linha de base de desempenho para comparar o desempenho de sua carga de trabalho em um Instância Gerenciada de SQL com sua carga de trabalho original em execução no SQL Server.
Criar uma linha de base
O ideal é que o desempenho seja semelhante ou melhor após a migração. Portanto, é importante medir e registrar os valores de desempenho de linha de base na origem e, em seguida, compará-los com o ambiente de destino. Uma linha de base de desempenho é um conjunto de parâmetros que definem a carga de trabalho média em sua fonte.
Selecione um conjunto de consultas que são importantes para e representativas de sua carga de trabalho de negócios. Meça e documente a duração mínima/média/máxima e a utilização da CPU para essas consultas, bem como as métricas de desempenho no servidor de origem, como o uso médio/máximo da CPU, latência média/máxima de E/S de disco, taxa de transferência, IOPS, expectativa de vida da página média/máxima e tamanho máximo médio de tempdb
.
Os recursos a seguir podem ajudar a definir uma linha de base de desempenho:
- Monitorar uso da CPU
- Monitore o uso de memória e determine a quantidade de memória usada por diferentes componentes, como pool de buffers, cache de planos, pool de repositório de coluna, OLTP na memória, etc. Além disso, você deve encontrar os valores médio e de pico do contador de desempenho de memória expectativa de vida da página.
- Monitore o uso de E/S de disco na instância de SQL Server de origem usando a exibição sys.dm_io_virtual_file_stats ou contadores de desempenho.
- Monitore a carga de trabalho e o desempenho de consulta examinando exibições de gerenciamento dinâmico (ou Repositório de Consultas se você estiver migrando do SQL Server 2016 e posterior). Identifique a duração média e o uso da CPU das consultas mais importantes em sua carga de trabalho.
Os problemas de desempenho no SQL Server de origem devem ser resolvidos antes da migração. A migração de problemas conhecidos para qualquer novo sistema pode causar resultados inesperados e invalidar qualquer comparação de desempenho.
Comparação de desempenho
Depois de definir uma linha de base, compare o desempenho de carga de trabalho semelhante na Instância Gerenciada de SQL de destino. Para exatidão, é importante que o ambiente da Instância Gerenciada de SQL seja comparável o máximo possível ao ambiente de SQL Server.
Há diferenças de infraestrutura na Instância Gerenciada de SQL que tornam a correspondência exata do desempenho improvável. Algumas consultas podem ser executadas mais rápido do que o esperado, enquanto outras podem ser mais lentas. O objetivo da comparação é verificar se o desempenho da carga de trabalho na instância gerenciada corresponde ao desempenho no SQL Server (em média) e identifica quaisquer consultas críticas com o desempenho que não correspondam ao seu desempenho original.
A comparação de desempenho provavelmente terá os seguintes resultados:
O desempenho da carga de trabalho na instância gerenciada é alinhado ou melhor do que o desempenho da carga de trabalho no SQL Server de origem. Nesse caso, você confirma com êxito que a migração foi bem-sucedida.
A maioria dos parâmetros de desempenho e das consultas na carga de trabalho é executada conforme o esperado, com algumas exceções, resultando em desempenho degradado. Nesse caso, identifique as diferenças e sua importância. Se houver algumas consultas importantes com desempenho degradado, investigue se os planos SQL subjacentes foram alterados ou se as consultas estão atingindo os limites de recursos. Você pode mitigar isso aplicando algumas dicas sobre consultas críticas (por exemplo, alterar o nível de compatibilidade, avaliador de cardinalidade herdado) diretamente ou usando guias de plano. Certifique-se de que estatísticas e índices estejam atualizados e equivalentes em ambos os ambientes.
A maioria das consultas é mais lenta em uma instância gerenciada em comparação com a instância de SQL Server de origem. Nesse caso, tente identificar as causas raiz da diferença, como atingir um limite de recursos, como os limites de taxa de E/S, memória ou log de instância. Se não houver nenhum limite de recurso causando a diferença, tente alterar o nível de compatibilidade do banco de dados ou alterar as configurações do banco de dados como estimativa de cardinalidade herdada e execute o teste novamente. Examine as recomendações fornecidas pela instância gerenciada ou visualização do Repositório de Consultas para identificar as consultas com desempenho regressivo.
A Instância Gerenciada de SQL tem um recurso interno de correção de plano automático que está habilitado por padrão. Esse recurso garante que as consultas que funcionaram bem no passado não sejam prejudicadas no futuro. Se esse recurso não estiver habilitado, execute a carga de trabalho com as configurações antigas para que a Instância Gerenciada de SQL possa aprender a linha de base de desempenho. Em seguida, habilite o recurso e execute a carga de trabalho novamente com as novas configurações.
Faça alterações nos parâmetros do teste ou atualize para camadas de serviço mais altas para alcançar a configuração ideal para o desempenho da carga de trabalho que atenda às suas necessidades.
Monitorar desempenho
A Instância Gerenciada de SQL fornece ferramentas avançadas para monitoramento e solução de problemas, e você deve usá-las para monitorar o desempenho em sua instância. Algumas das principais métricas a serem monitoradas são:
- Uso da CPU na instância para determinar se o número de vCores que você provisionou é a correspondência correta para sua carga de trabalho.
- A duração prevista da página em sua instância gerenciada para determinar se você precisa de memória adicional.
- Estatísticas como INSTANCE_LOG_GOVERNOR ou PAGEIOLATCH que identificam problemas de E/S de armazenamento, especialmente na camada de Uso Geral, em que talvez seja necessário alocar previamente os arquivos para obter um desempenho de E/S melhor.
Considerações
Ao comparar o desempenho, considere os requisitos a seguir:
As configurações correspondem entre a origem e o destino. Valide se várias configurações de instância, banco de dados e
tempdb
são equivalentes entre os dois ambientes. As diferenças na configuração, nos níveis de compatibilidade, nas configurações de criptografia, nos sinalizadores de rastreamento, etc., podem distorcer o desempenho.O armazenamento é configurado de acordo com as práticas recomendadas. Por exemplo, para Uso Geral, talvez seja necessário alocar previamente o tamanho dos arquivos para melhorar o desempenho.
Há importantes diferenças de ambiente que podem causar as diferenças de desempenho entre uma instância gerenciada e o SQL Server. Identifique os riscos relevantes para o seu ambiente que possam contribuir para um problema de desempenho.
O repositório de consultas e o ajuste automático devem ser habilitados na sua Instância Gerenciada de SQL, pois eles ajudam a medir o desempenho da carga de trabalho e a mitigar automaticamente os possíveis problemas de desempenho.
Conteúdo relacionado
- Como identificar por que o desempenho da carga de trabalho na Instância Gerenciada de SQL do Azure é diferente de SQL Server?
- Principais causas de diferenças de desempenho entre a Instância Gerenciada de SQL e SQL Server
- Práticas recomendadas e considerações de desempenho de armazenamento e para a Instância Gerenciada de SQL do Azure (Uso Geral)
- Monitoramento de desempenho em tempo real para a Instância Gerenciada de SQL do Azure (isso é arquivado, esse é o destino pretendido?)