Coletar linha de base: práticas recomendadas de desempenho para o SQL Server na VM do Azure

Aplica-se a:SQL Server na VM do Azure

Este artigo fornece informações para coletar uma linha de base de desempenho como uma série de práticas recomendadas e diretrizes para otimizar o desempenho do SQL Server em Máquinas Virtuais (VMs) do Azure.

Normalmente, há um compromisso entre a otimização para custos e otimização para desempenho. Esta série de práticas recomendadas de desempenho se concentra em obter o melhor desempenho para o SQL Server em Máquinas Virtuais do Azure. Se sua carga de trabalho for menos exigente, talvez você não precise de todas as otimizações recomendadas. Considere suas necessidades de desempenho, custos e padrões de carga de trabalho ao avaliar essas recomendações.

Descrição geral

Para uma abordagem prescritiva, reúna contadores de desempenho usando PerfMon/LogMan e capture estatísticas de espera do SQL Server para entender melhor as pressões gerais e possíveis gargalos do ambiente de origem.

Comece coletando a CPU, a memória, o IOPS, a taxa de transferência e a latência da carga de trabalho de origem nos horários de pico, seguindo a lista de verificação de desempenho do aplicativo.

Reúna dados durante as horas de pico, como cargas de trabalho durante o seu dia útil típico, mas também outros processos de alta carga, como processamento de fim de dia e cargas de trabalho ETL de fim de semana. Considere expandir seus recursos para cargas de trabalho atipicamente pesadas, como processamento de fim de trimestre, e dimensionar assim que a carga de trabalho for concluída.

Use a análise de desempenho para selecionar o Tamanho da VM que pode ser dimensionado de acordo com os requisitos de desempenho da sua carga de trabalho.

Armazenamento

O desempenho do SQL Server depende muito do subsistema de E/S e o desempenho do armazenamento é medido por IOPS e taxa de transferência. A menos que seu banco de dados caiba na memória física, o SQL Server constantemente traz páginas de banco de dados para dentro e para fora do pool de buffers. Os arquivos de dados do SQL Server devem ser tratados de forma diferente. O acesso aos arquivos de log é sequencial, exceto quando uma transação precisa ser revertida onde os arquivos de dados, incluindo tempdb, são acessados aleatoriamente. Se você tiver um subsistema de E/S lento, os usuários poderão enfrentar problemas de desempenho, como tempos de resposta lentos e tarefas que não são concluídas devido a tempos limites.

As máquinas virtuais do Azure Marketplace têm arquivos de log em um disco físico separado dos arquivos de dados por padrão. A contagem e o tamanho dos tempdb arquivos de dados atendem às práticas recomendadas e são direcionados para a unidade efêmera D:\ .

Os seguintes contadores PerfMon podem ajudar a validar a taxa de transferência de E/S exigida pelo SQL Server:

  • \LogicalDisk\Disk Reads/Sec (ler IOPS)
  • \LogicalDisk\Disk Writes/Sec (IOPS de gravação)
  • \LogicalDisk\Disk Read Bytes/Sec (requisitos de taxa de transferência de leitura para dados, log e tempdb arquivos)
  • \LogicalDisk\Disk Write Bytes/Sec (requisitos de taxa de transferência de gravação para dados, log e tempdb arquivos)

Usando IOPS e requisitos de taxa de transferência em níveis de pico, avalie os tamanhos de VM que correspondem à capacidade de suas medições.

Se sua carga de trabalho exigir IOPS de leitura de 20K e IOPS de gravação de 10K, você poderá escolher E16s_v3 (com IOPS de até 32K em cache e 25600 IOPS sem cache) ou M16_s (com IOPS de até 20K em cache e 10K sem cache) com 2 discos P30 distribuídos usando Espaços de Armazenamento.

Certifique-se de entender os requisitos de taxa de transferência e IOPS da carga de trabalho, pois as VMs têm limites de escala diferentes para IOPS e taxa de transferência.

Memória

Rastreie a memória externa usada pelo sistema operacional, bem como a memória usada internamente pelo SQL Server. Identificar a pressão para qualquer componente ajudará a dimensionar máquinas virtuais e identificar oportunidades de ajuste.

Os seguintes contadores PerfMon podem ajudar a validar a integridade da memória de uma máquina virtual do SQL Server:

Computação

A computação no Azure é gerenciada de forma diferente do local. Os servidores locais são construídos para durar vários anos sem uma atualização devido à sobrecarga de gerenciamento e ao custo de aquisição de novo hardware. A virtualização atenua alguns desses problemas, mas os aplicativos são otimizados para tirar o máximo proveito do hardware subjacente, o que significa que qualquer alteração significativa no consumo de recursos requer o reequilíbrio de todo o ambiente físico.

Isso não é um desafio no Azure, onde uma nova máquina virtual em uma série diferente de hardware, e até mesmo em uma região diferente, é fácil de alcançar.

No Azure, você deseja aproveitar o máximo possível dos recursos das máquinas virtuais, portanto, as máquinas virtuais do Azure devem ser configuradas para manter a CPU média o mais alta possível sem afetar a carga de trabalho.

Os seguintes contadores PerfMon podem ajudar a validar a integridade da computação de uma máquina virtual do SQL Server:

  • \Informações do processador(_Total)% Tempo do processador
  • \Process(sqlservr)% Tempo do processador

Nota

Idealmente, tente usar 80% do seu cálculo, com picos acima de 90%, mas não atingindo 100% por qualquer período sustentado de tempo. Fundamentalmente, você só deseja provisionar a computação de que o aplicativo precisa e, em seguida, planejar a expansão para cima ou para baixo conforme a empresa exige.

Próximos passos

Para saber mais, consulte os outros artigos desta série de práticas recomendadas:

Para obter as práticas recomendadas de segurança, consulte Considerações de segurança para o SQL Server em Máquinas Virtuais do Azure.

Analise outros artigos da Máquina Virtual do SQL Server em Visão geral do SQL Server on Azure Virtual Machines. Se tiver dúvidas sobre máquinas virtuais do SQL Server, veja as Perguntas Mais Frequentes.