Lista de verificação: melhores práticas do SQL Server nas VMs do Azure

Aplica-se a:SQL Server na VM do Azure

Este artigo fornece uma lista de verificação rápida como uma série de práticas recomendadas e diretrizes para otimizar o desempenho do seu SQL Server em Máquinas Virtuais (VMs) do Azure.

Para obter detalhes abrangentes, consulte os outros artigos desta série: Tamanho da VM, Armazenamento, Segurança, Configuração HADR, Coletar linha de base.

Habilite a Avaliação SQL para SQL Server em VMs do Azure e seu SQL Server será avaliado em relação às práticas recomendadas conhecidas com resultados na página de gerenciamento de VM SQL do portal do Azure.

Para obter vídeos sobre os recursos mais recentes para otimizar o desempenho da VM do SQL Server e automatizar o gerenciamento, revise os seguintes vídeos sobre dados expostos:

Descrição geral

Ao executar o SQL Server em Máquinas Virtuais do Azure, continue usando as mesmas opções de ajuste de desempenho de banco de dados aplicáveis ao SQL Server em ambientes de servidor locais. No entanto, o desempenho de um banco de dados relacional em uma nuvem pública depende de muitos fatores, como o tamanho de uma máquina virtual e a configuração dos discos de dados.

Normalmente, há um compromisso entre otimizar para custos e otimizar 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.

Tamanho da VM

A lista de verificação nesta seção aborda as práticas recomendadas de tamanho de VM para SQL Server em VMs do Azure.

  • A nova série Ebdsv5 fornece a mais alta taxa de transferência de E/S para vCore no Azure, juntamente com uma relação memória/vCore de 8. Esta série oferece o melhor preço-desempenho para cargas de trabalho do SQL Server em VMs do Azure. Considere esta série primeiro para a maioria das cargas de trabalho do SQL Server.
  • Use tamanhos de VM com 4 ou mais vCPUs, como o E4ds_v5 ou superior.
  • Utilize tamanhos de máquina virtual otimizada para memória para obter o melhor desempenho das cargas de trabalho do SQL Server.
  • As séries Edsv5, M e Mv2 oferecem a relação memória/vCore ideal necessária para cargas de trabalho OLTP.
  • As VMs da série M oferecem a mais alta relação memória/vCore no Azure. Considere essas VMs para cargas de trabalho de missão crítica e data warehouse.
  • Use as imagens do Azure Marketplace para implantar suas Máquinas Virtuais do SQL Server à medida que as configurações e as opções de armazenamento do SQL Server são definidas para um desempenho ideal.
  • Colete as características de desempenho da carga de trabalho de destino e use-as para determinar o tamanho apropriado da VM para sua empresa.
  • Use o Assistente de Migração de Dados e as ferramentas de recomendação de SKU para encontrar o tamanho de VM certo para sua carga de trabalho existente do SQL Server.
  • Use o Azure Data Studio para migrar para o Azure.

Armazenamento

A lista de verificação nesta seção aborda as práticas recomendadas de armazenamento para o SQL Server em VMs do Azure.

  • Monitore o aplicativo e determine os requisitos de largura de banda de armazenamento e latência para dados, log e tempdb arquivos do SQL Server antes de escolher o tipo de disco.
  • Se disponível, configure os dados e os tempdbarquivos de log no volume SSD D: local. A extensão do SQL IaaS Agent lida com a pasta e as permissões necessárias durante o reprovisionamento.
  • Para otimizar o desempenho do armazenamento, planeje as IOPS sem cache mais altas disponíveis e use o cache de dados como um recurso de desempenho para leituras de dados, evitando a limitação de máquinas virtuais e discos.
  • Considere o uso do Azure Elastic SAN para cargas de trabalho do SQL Server para obter melhor eficiência de custos devido à consolidação do armazenamento, ao desempenho dinâmico compartilhado e à capacidade de gerar uma taxa de transferência de armazenamento mais alta sem a necessidade de atualizar uma VM.
  • Coloque dados, log e tempdb arquivos em unidades separadas.
    • Para a unidade de dados, use discos premium P30 e P40 ou menores para garantir a disponibilidade do suporte de cache. Ao usar a série de VMs Ebdsv5, use o SSD Premium v2, que oferece melhor desempenho de preço para cargas de trabalho que exigem alta IOPS e taxa de transferência de E/S.
    • Para o plano de drive de log para capacidade e desempenho de teste versus custo ao avaliar discos SSD Premium v2 ou SSD Premium P30 - P80
      • Se a latência de armazenamento de submilissegundos for necessária, use o SSD Premium v2 ou os discos Ultra do Azure para o log de transações.
      • Para implantações de máquina virtual da série M, considere o acelerador de gravação usando discos Ultra do Azure.
    • Coloque tempdb no disco temporário (o disco temporário é efêmero e assume D:\como padrão ) para a maioria das cargas de trabalho do SQL Server que não fazem parte de uma FCI (instância de cluster de failover) depois de escolher o tamanho ideal da VM.
      • Se a capacidade da unidade local não for suficiente para tempdbo , considere dimensionar a VM. Para obter mais informações, consulte Políticas de cache de arquivos de dados.
    • Para FCI, coloque tempdb no armazenamento compartilhado.
      • Se a carga de trabalho FCI depender fortemente do desempenho do disco, então como um local tempdb de configuração avançada na unidade SSD efêmera local (padrãoD:\), que não faz parte do tempdb armazenamento FCI. Essa configuração precisa de monitoramento e ação personalizados para garantir que a unidade SSD efêmera local (padrão D:\) esteja disponível o tempo todo, pois qualquer falha dessa unidade não desencadeará a ação da FCI.
  • Distribua vários discos de dados do Azure usando Espaços de Armazenamento para aumentar a largura de banda de E/S até os limites de IOPS e taxa de transferência da máquina virtual de destino.
  • Defina o cache do host como somente leitura para discos de arquivos de dados.
  • Defina o cache do host como nenhum para discos de arquivo de log.
    • Não ative a colocação em cache de leitura/escrita em discos que contêm dados ou ficheiro de registo do SQL Server.
    • Pare sempre o serviço SQL Server antes de alterar as definições de cache do disco.
  • Para cargas de trabalho de desenvolvimento e teste e arquivamento de backup de longo prazo, considere o uso de armazenamento padrão. Não é recomendado o uso de HDD/SSD padrão para cargas de trabalho de produção.
  • O Disk Bursting baseado em crédito (P1-P20) só deve ser considerado para cargas de trabalho de desenvolvimento/teste menores e sistemas departamentais.
  • Para otimizar o desempenho do armazenamento, planeje as IOPS sem cache mais altas disponíveis e use o cache de dados como um recurso de desempenho para leituras de dados, evitando a limitação/limitação de máquinas virtuais e discos.
  • Formate seu disco de dados para usar o tamanho da unidade de alocação de 64 KB para todos os arquivos de dados colocados em uma unidade diferente da unidade temporária D:\ (que tem um padrão de 4 KB). As VMs do SQL Server implantadas por meio do Azure Marketplace vêm com discos de dados formatados com tamanho de unidade de alocação e intercalação para o pool de armazenamento definido como 64 KB.
  • Configure a conta de armazenamento na mesma região que a VM do SQL Server.
  • Desative o armazenamento com redundância geográfica do Azure (replicação geográfica) e use o LRS (armazenamento redundante local) na conta de armazenamento.
  • Habilite a Avaliação de Práticas Recomendadas do SQL para identificar possíveis problemas de desempenho e avaliar se sua VM do SQL Server está configurada para seguir as práticas recomendadas.
  • Revise e monitore os limites de disco e VM usando métricas de utilização de E/S de armazenamento.
  • Exclua arquivos do SQL Server da verificação de software antivírus, incluindo arquivos de dados, arquivos de log e arquivos de backup.

Segurança

A lista de verificação nesta seção aborda as práticas recomendadas de segurança para o SQL Server em VMs do Azure.

Os recursos e capacidades do SQL Server fornecem um método de segurança no nível de dados e é como você obtém defesa profunda no nível de infraestrutura para soluções híbridas e baseadas em nuvem. Além disso, com as medidas de segurança do Azure, é possível criptografar seus dados confidenciais, proteger máquinas virtuais contra vírus e malware, proteger o tráfego de rede, identificar e detetar ameaças, atender aos requisitos de conformidade e fornecer um único método de administração e relatórios para qualquer necessidade de segurança na nuvem híbrida.

  • Use o Microsoft Defender for Cloud para avaliar e tomar medidas para melhorar a postura de segurança do seu ambiente de dados. Recursos como a ATP (Proteção Avançada contra Ameaças) do Azure podem ser aproveitados em suas cargas de trabalho híbridas para melhorar a avaliação de segurança e dar a capacidade de reagir a riscos. O registro de sua VM do SQL Server com a extensão do SQL IaaS Agent apresenta as avaliações do Microsoft Defender for Cloud dentro do recurso de máquina virtual SQL do portal do Azure.
  • Use o Microsoft Defender for SQL para descobrir e mitigar possíveis vulnerabilidades do banco de dados, bem como detetar atividades anômalas que possam indicar uma ameaça à sua instância do SQL Server e à camada de banco de dados.
  • A Avaliação de Vulnerabilidades é uma parte do Microsoft Defender for SQL que pode descobrir e ajudar a corrigir riscos potenciais para o seu ambiente SQL Server. Ele fornece visibilidade sobre seu estado de segurança e inclui etapas acionáveis para resolver problemas de segurança.
  • Use VMs confidenciais do Azure para reforçar a proteção de seus dados em uso e dados em repouso contra o acesso do operador de host. As VMs confidenciais do Azure permitem que você armazene com confiança seus dados confidenciais na nuvem e atenda aos rigorosos requisitos de conformidade.
  • Se você estiver no SQL Server 2022, considere usar a autenticação do Microsoft Entra para se conectar à sua instância do SQL Server.
  • O Azure Advisor analisa a configuração de recursos e a telemetria de uso e, em seguida, recomenda soluções que podem ajudá-lo a melhorar a relação custo-eficácia, o desempenho, a alta disponibilidade e a segurança dos recursos do Azure. Aproveite o Consultor do Azure no nível de máquina virtual, grupo de recursos ou assinatura para ajudar a identificar e aplicar as práticas recomendadas para otimizar suas implantações do Azure.
  • Use o Azure Disk Encryption quando suas necessidades de conformidade e segurança exigirem que você criptografe os dados de ponta a ponta usando suas chaves de criptografia, incluindo a criptografia do disco efêmero (temporário conectado localmente).
  • Os Discos Gerenciados são criptografados em repouso por padrão usando a Criptografia do Serviço de Armazenamento do Azure, onde as chaves de criptografia são chaves gerenciadas pela Microsoft armazenadas no Azure.
  • Para obter uma comparação das opções de criptografia de disco gerenciado, revise o gráfico de comparação de criptografia de disco gerenciado
  • As portas de gerenciamento devem ser fechadas em suas máquinas virtuais - As portas de gerenciamento remoto abertas expõem sua VM a um alto nível de risco de ataques baseados na Internet. Esses ataques tentam obter credenciais de força bruta para obter acesso de administrador à máquina.
  • Ativar o acesso Just-in-time (JIT) para máquinas virtuais do Azure
  • Use o Azure Bastion sobre RDP (Remote Desktop Protocol).
  • Bloqueie portas e permita apenas o tráfego de aplicativo necessário usando o Firewall do Azure, que é um Firewall como Serviço (FaaS) gerenciado que concede/nega acesso ao servidor com base no endereço IP de origem.
  • Usar NSGs (Grupos de Segurança de Rede) para filtrar o tráfego de rede de e para recursos do Azure em Redes Virtuais do Azure
  • Aproveite os Grupos de Segurança de Aplicativos para agrupar servidores com requisitos de filtragem de porta semelhantes, com funções semelhantes, como servidores Web e servidores de banco de dados.
  • Para servidores Web e de aplicativos, aproveite a proteção contra DDoS (Distributed Denial of Service) do Azure. Os ataques DDoS são projetados para sobrecarregar e esgotar os recursos da rede, tornando os aplicativos lentos ou sem resposta. É comum que os ataques DDos tenham como alvo interfaces de usuário. A proteção contra DDoS do Azure limpa o tráfego de rede indesejado, antes que afete a disponibilidade do serviço
  • Use extensões de VM para ajudar a lidar com antimalware, estado desejado, deteção de ameaças, prevenção e correção para lidar com ameaças nos níveis de sistema operacional, máquina e rede:
  • Use a Política do Azure para criar regras de negócios que podem ser aplicadas ao seu ambiente. As Políticas do Azure avaliam os recursos do Azure comparando as propriedades desses recursos com as regras definidas no formato JSON.
  • O Azure Blueprints permite que os arquitetos da cloud e os grupos de tecnologias de informação definam um conjunto repetível de recursos do Azure que implemente e adira às normas, padrões e requisitos de uma organização. Os Azure Blueprints são diferentes das Políticas do Azure.

Recursos do SQL Server

A seguir está uma lista de verificação rápida de práticas recomendadas para definições de configuração do SQL Server ao executar suas instâncias do SQL Server em uma máquina virtual do Azure em produção:

Funcionalidades do Azure

A seguir está uma lista de verificação rápida de práticas recomendadas para orientação específica do Azure ao executar seu SQL Server na VM do Azure:

Configuração HADR

A lista de verificação nesta seção aborda as práticas recomendadas de HADR para SQL Server em VMs do Azure.

Os recursos de alta disponibilidade e recuperação de desastres (HADR), como o grupo de disponibilidade Always On e a instância de cluster de failover, dependem da tecnologia subjacente de Cluster de Failover do Windows Server. Analise as práticas recomendadas para modificar suas configurações de HADR para oferecer melhor suporte ao ambiente de nuvem.

Para o cluster do Windows, considere estas práticas recomendadas:

  • Implante suas VMs do SQL Server em várias sub-redes sempre que possível para evitar a dependência de um Balanceador de Carga do Azure ou de um DNN (nome de rede distribuído) para rotear o tráfego para sua solução HADR.
  • Altere o cluster para parâmetros menos agressivos para evitar interrupções inesperadas devido a falhas de rede transitórias ou manutenção da plataforma Azure. Para saber mais, consulte Configurações de pulsação e limite. Para o Windows Server 2012 e versões posteriores, use os seguintes valores recomendados:
    • SameSubnetDelay: 1 segundo
    • SameSubnetThreshold: 40 batimentos cardíacos
    • CrossSubnetDelay: 1 segundo
    • CrossSubnetThreshold: 40 batimentos cardíacos
  • Coloque suas VMs em um conjunto de disponibilidade ou em zonas de disponibilidade diferentes. Para saber mais, consulte Configurações de disponibilidade de VM.
  • Use uma única NIC por nó de cluster.
  • Configure a votação de quórum de cluster para usar 3 ou mais números ímpares de votos. Não atribua votos a regiões DR.
  • Monitore cuidadosamente os limites de recursos para evitar reinicializações inesperadas ou failovers devido a restrições de recursos.
    • Verifique se o SO, os controladores e o SQL Server têm as compilações mais recentes.
    • Otimize o desempenho do SQL Server em VMs do Azure. Consulte as outras secções deste artigo para saber mais.
    • Reduza ou distribua a carga de trabalho para evitar limites de recursos.
    • Mova para uma VM ou disco que seus limites mais altos para evitar restrições.

Para seu grupo de disponibilidade do SQL Server ou instância de cluster de failover, considere estas práticas recomendadas:

  • Se você estiver enfrentando falhas inesperadas frequentes, siga as práticas recomendadas de desempenho descritas no restante deste artigo.
  • Se a otimização do desempenho da VM do SQL Server não resolver seus failovers inesperados, considere relaxar o monitoramento para o grupo de disponibilidade ou instância de cluster de failover. No entanto, isso pode não resolver a origem subjacente do problema e pode mascarar os sintomas, reduzindo a probabilidade de falha. Talvez ainda seja necessário investigar e abordar a causa raiz subjacente. Para Windows Server 2012 ou superior, use os seguintes valores recomendados:
    • Tempo limite de locação: use esta equação para calcular o valor máximo de tempo limite de locação:
      Lease timeout < (2 * SameSubnetThreshold * SameSubnetDelay).
      Comece com 40 segundos. Se você estiver usando os valores relaxados SameSubnetThreshold e SameSubnetDelay recomendados anteriormente, não exceda 80 segundos para o valor de tempo limite de locação.
    • Falhas máximas em um período especificado: defina esse valor como 6.
  • Ao usar o nome da rede virtual (VNN) e um Balanceador de Carga do Azure para se conectar à sua solução HADR, especifique MultiSubnetFailover = true na cadeia de conexão, mesmo que o cluster abranja apenas uma sub-rede.
    • Se o cliente não oferecer suporte MultiSubnetFailover = True , talvez seja necessário definir RegisterAllProvidersIP = 0 e HostRecordTTL = 300 armazenar em cache as credenciais do cliente por períodos mais curtos. No entanto, isso pode causar consultas adicionais ao servidor DNS.
  • Para se conectar à sua solução HADR usando o nome de rede distribuída (DNN), considere o seguinte:
    • Você deve usar um driver de cliente que ofereça suporte a MultiSubnetFailover = True, e esse parâmetro deve estar na cadeia de conexão.
    • Use uma porta DNN exclusiva na cadeia de conexão ao se conectar ao ouvinte DNN para um grupo de disponibilidade.
  • Use uma cadeia de conexão de espelhamento de banco de dados para um grupo de disponibilidade básica para ignorar a necessidade de um balanceador de carga ou DNN.
  • Valide o tamanho do setor de seus VHDs antes de implantar sua solução de alta disponibilidade para evitar E/S desalinhadas. Consulte KB3009974 para saber mais.
  • Se o mecanismo de banco de dados do SQL Server, o ouvinte do grupo de disponibilidade Always On ou a sonda de integridade da instância de cluster de failover estiverem configurados para usar uma porta entre 49.152 e 65.536 (o intervalo de portas dinâmicas padrão para TCP/IP), adicione uma exclusão para cada porta. Isso evita que outros sistemas recebam dinamicamente a mesma porta. O exemplo a seguir cria uma exclusão para a porta 59999:
    netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent

Resolução de problemas de desempenho

A seguir está uma lista de recursos que ajudarão você a solucionar problemas de desempenho do SQL Server.

Considere habilitar a Avaliação SQL para SQL Server em VMs 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.