Liste de vérification : Meilleures pratiques relatives à SQL Server sur les machines virtuelles Azure

S’applique à : SQL Server sur la machine virtuelle Azure

Cet article fournit une check-list rapide sous la forme d’une série de bonnes pratiques et de recommandations pour optimiser les performances de votre serveur SQL Server dans une instance de SQL Server sur les machines virtuelles Azure.

Pour des détails complets, consultez les autres articles de cette série : Taille de machine virtuelle, Stockage, Sécurité, Configuration HADR, Collecter une ligne de base.

Activez la fonctionnalité SQL Assessment pour SQL Server sur des machines virtuelles Azure. Votre serveur SQL sera évalué par rapport aux meilleures pratiques connues avec les résultats sur la page de gestion des machines virtuelles SQL du portail Azure.

Pour obtenir des vidéos sur les dernières fonctionnalités pour optimiser SQL Server performances des machines virtuelles et automatiser la gestion, passez en revue les vidéos exposées de données suivantes :

Vue d’ensemble

Quand vous exécutez SQL Server sur les machines virtuelles Azure, utilisez les options de réglage des performances de base de données qui s’appliquent à SQL Server dans les environnements serveur locaux. Toutefois, les performances d’une base de données relationnelle dans un cloud public dépendent de nombreux facteurs, par exemple la taille d’une machine virtuelle et la configuration des disques de données.

Il existe généralement un compromis entre l’optimisation des coûts et l’optimisation des performances. Cette série de bonnes pratiques sur les performances vise à obtenir les meilleures performances possibles pour SQL Server sur les machines virtuelles Azure. Si votre charge de travail est moindre, vous n’aurez peut-être pas besoin de toutes les optimisations recommandées. Tenez compte de vos besoins de performances, des coûts et des modèles de charges de travail lors de l’évaluation de ces recommandations.

Taille de la machine virtuelle

La liste de vérification de cette section décrit les meilleures pratiques en matière de taille des machines virtuelles pour SQL Server sur les machines virtuelles Azure.

  • La série Ebdsv5 fournit le taux d’E/S le plus élevé à vCore dans Azure, ainsi qu’un ratio mémoire/vCore de 8. Cette série offre le meilleur rapport performances/prix pour les charges de travail SQL Server sur des machines virtuelles Azure. Envisagez cette série en premier pour la plupart des charges de travail SQL Server.
  • Utilisez des tailles de machine virtuelle offrant au moins 4 processeurs virtuels, comme E4ds_v5 ou version ultérieure.
  • Utilisez des tailles de machine virtuelle à mémoire optimisée pour optimiser les performances des charges de travail SQL Server.
  • La série Edsv5 et la série Ebdsv5, la série Msv3 et Mdsv3 offrent un ratio mémoire/vCore optimal requis pour les charges de travail OLTP.
  • Les machines virtuelles de la série M offrent le ratio mémoire/vCore le plus élevé dans Azure. Tenez compte de ces machines virtuelles pour les charges de travail OLTP et d’entrepôt de données critiques.
  • Utilisez des images de la Place de marché Azure pour déployer vos machines virtuelles SQL Server, car les paramètres et les options de stockage de SQL Server sont configurés pour optimiser les performances.
  • Collectez les caractéristiques de performances de la charge de travail cible, et utilisez-les pour déterminer la taille de machine virtuelle appropriée pour votre entreprise.
  • Utilisez les outils Assistant Migration de données et Recommandation de référence SKU pour trouver la taille de machine virtuelle adaptée à votre charge de travail SQL Server existante.
  • Utilisez Azure Data Studio pour migrer vers Azure.

Avertissement

L’installation de SQL Server sur des systèmes qui dépassent 64 cœurs par nœud NUMA n’est actuellement pas prise en charge. Cette limite s’applique actuellement aux tailles de machines virtuelles Azure Standard_M176s_3_v3 et Standard_M176s_4_v3 dans la série de mémoire moyenne Msv3 et Mdsv3.

Stockage

La liste de vérification de cette section décrit les meilleures pratiques relatives au stockage pour SQL Server sur les machines virtuelles Azure.

  • Supervisez l’application et déterminez les besoins du stockage en bande passante et en latence pour les fichiers de données, fichiers journaux et fichiers tempdb de SQL Server avant de choisir le type de disque.
  • Si disponible, configurez les tempdb données et les fichiers journaux sur le volume D: SSD local. L’extension SQL IaaS Agent gère le dossier et les autorisations nécessaires lors du réapprovisionnement.
  • Pour optimiser les performances de stockage, planifiez les IOPS non mises en cache les plus élevées disponibles et utilisez la mise en cache des données en tant que fonctionnalité de performances pour les lectures de données tout en évitant l'encapsulation des machines virtuelles et des disques.
  • Lorsque vous utilisez les machines virtuelles SQL Server de la série Ebdsv5 ou Ebsv5 , utilisez ssd Premium v2 pour obtenir les meilleures performances de prix. Vous pouvez déployer votre machine virtuelle SQL Server avec SSD Premium v2 à l’aide du Portail Azure (actuellement en préversion).
  • Placez les fichiers de données, les fichiers journaux et les tempdb fichiers sur des lecteurs distincts.
    • Pour le lecteur de données, utilisez des disques Premium P30 et P40 ou des disques plus petits afin de garantir la disponibilité de la prise en charge du cache. Si vous utilisez la série de machines virtuelles Ebdsv5, optez pour des disques SSD Premium v2 qui sont moins coûteux pour les charges de travail qui nécessitent des IOPS et un débit d’E/S élevés.
    • Pour le lecteur de journaux, prévoyez une capacité suffisante et testez les performances par rapport au coût quand vous faites l’évaluation des disques SSD Premium v2 ou des disques P30 - P80.
    • Placez tempdb sur le disque temporaire (le disque temporaire est éphémère et est configuré par défaut sur D:\) pour la plupart des charges de travail SQL Server qui ne font pas partie de l’instance de cluster de basculement (FCI) après avoir choisi la taille de machine virtuelle optimale.
    • Pour les instances de cluster de basculement (FCI) placent tempdb sur le stockage partagé.
      • Si la charge de travail FCI dépend largement des performances de disque tempdb, en tant que configuration avancée, placez tempdb sur le lecteur SSD éphémère local (D:\ par défaut) qui ne fait pas partie du stockage FCI. Cette configuration nécessite une supervision et une action personnalisées pour garantir que le lecteur SSD éphémère local (D:\ par défaut) est disponible à tout moment, car les échecs de ce lecteur ne vont pas déclencher d’action de FCI.
  • Entrelacez plusieurs disques de données Azure à l’aide d'espaces de stockage pour augmenter la bande passante d’E/S jusqu’aux limites de débit et d’IOPS de la machine virtuelle cible.
  • Réglez host caching (mise en cache de l’hôte) sur read-only (en lecture seule) pour les disques de fichiers de données.
  • Réglez host caching (mise en cache de l’hôte) sur none (aucune) pour les disques de fichiers journaux.
    • N’activez pas la mise en cache en lecture/écriture sur les disques qui contiennent des données ou des fichiers journaux SQL Server.
    • Arrêtez toujours le service SQL Server avant de modifier les paramètres de cache de votre disque.
  • Lors de la migration de plusieurs charges de travail différentes vers le cloud, Azure Elastic SAN peut être une solution de stockage consolidée rentable. Toutefois, lors de l’utilisation d’Azure Elastic SAN, l’obtention d’IOPS/débit souhaités pour les charges de travail SQL Server nécessite souvent une capacité de surapprovisionnement. Bien qu’il ne soit généralement pas approprié pour les charges de travail SQL Server uniques, vous pouvez obtenir une solution rentable lors de la combinaison de charges de travail à faible performance avec SQL Server.
  • Pour les charges de travail de développement et de test, et l’archivage de sauvegarde à long terme, pensez à utiliser le stockage standard. Il est déconseillé d’utiliser des disques SDD/HDD Standard pour les charges de travail de production.
  • Le bursting de disque basé sur les crédits (P1-P20) ne doit être pris en compte que pour les charges de travail de dev/test et les systèmes départementaux plus petits.
  • Pour optimiser les performances du stockage, prévoyez les IOPS non mises en cache les plus élevées disponibles, et utilisez la mise en cache des données comme fonctionnalité de performance pour les lectures de données, tout en évitant les plafonnements/limitations applicables à la machine virtuelle et aux disques.
  • Formatez votre disque de données afin d’utiliser une taille d’unité d’allocation de 64 ko pour tous les fichiers de données placés sur un lecteur autre que le lecteur D:\ temporaire (dont la valeur par défaut est de 4 ko). Les machines virtuelles SQL Server déployées via la Place de marché Azure sont fournies avec des disques de données formatés avec une taille d’unité d’allocation et un entrelacement pour le pool de stockage défini sur 64 Ko.
  • Configurez le compte de stockage dans la même région que la machine virtuelle SQL Server.
  • Désactivez le stockage géoredondant Azure (géoréplication) et utilisez LRS (stockage local redondant) sur le compte de stockage.
  • Activez l’évaluation des bonnes pratiques SQL pour identifier les problèmes de performances possibles et évaluer si votre machine virtuelle SQL Server est configurée pour suivre les bonnes pratiques.
  • Passez en revue et supervisez les limites de disque et de machine virtuelle en utilisant des métriques d’utilisation des E/S de stockage.
  • Excluez les fichiers SQL Server de l’analyse logicielle antivirus, y compris les fichiers de données, les fichiers journaux et les fichiers de sauvegarde.

Sécurité

La liste de vérification de cette section décrit les meilleures pratiques de sécurité pour SQL Server sur les machines virtuelles Azure.

Les fonctionnalités de SQL Server fournissent des méthodes de sécurisation des données au niveau de la base de données qui peuvent être combinées avec des fonctionnalités de sécurité au niveau de l’infrastructure. Ensemble, ces fonctionnalités fournissent une défense approfondie au niveau de l’infrastructure pour les solutions cloud et hybrides. En outre, grâce aux mesures de sécurité d’Azure, il est possible de chiffrer vos données sensibles, de protéger les machines virtuelles contre les virus et les logiciels malveillants, de sécuriser le trafic réseau, d’identifier et de détecter les menaces, de répondre aux exigences de conformité et de fournir une méthode unique d’administration et de création de rapports pour tout besoin de sécurité dans le cloud hybride.

  • Utilisez Microsoft Defender pour le cloud pour évaluer et prendre des mesures afin d’améliorer la posture de sécurité de votre environnement de données. Des fonctionnalités comme Azure Advanced Threat Protection (ATP) peuvent être utilisées dans vos charges de travail hybrides pour améliorer l’évaluation de la sécurité et permettre de réagir aux risques. L’enregistrement de votre machine virtuelle SQL Server avec l’extension SQL IaaS Agent fait apparaître les évaluations Microsoft Defender pour le cloud dans la ressource de machine virtuelle SQL du Portail Azure.
  • Utilisez Microsoft Defender pour SQL pour découvrir et atténuer les vulnérabilités potentielles des bases de données ainsi que pour détecter les activités anormales qui pourraient indiquer une menace pour votre instance SQL Server et votre couche de base de données.
  • Les évaluations de vulnérabilité font partie de Microsoft Defender pour SQL et permettent de découvrir et de corriger les risques potentiels pour votre environnement SQL Server. Elle offre une visibilité sur votre état de sécurité et inclut des mesures pratiques pour résoudre les problèmes de sécurité.
  • Utilisez des machines virtuelles confidentielles Azure pour renforcer la protection de vos données en cours d’utilisation et des données au repos contre l’accès des opérateurs hôtes. Les machines virtuelles confidentielles Azure vous permettent de stocker vos données sensibles dans le cloud et de satisfaire à des exigences de conformité strictes.
  • Si vous utilisez SQL Server 2022, envisagez d’utiliser l’authentification Microsoft Entra pour vous connecter à votre instance SQL Server.
  • Azure Advisor analyse votre télémétrie de configuration et d’utilisation des ressources, puis recommande des solutions qui peuvent vous aider à améliorer la rentabilité, les performances, la haute disponibilité et la sécurité de vos ressources Azure. Utilisez Azure Advisor sur la machine virtuelle, le groupe de ressources ou le niveau d’abonnement pour mieux identifier et appliquer les meilleures pratiques afin d’optimiser vos déploiements Azure.
  • Utilisez Azure Disk Encryption lorsque vos besoins de conformité et de sécurité vous imposent de chiffrer les données de bout en bout à l’aide de vos clés de chiffrement, y compris le chiffrement du disque éphémère (temporaire et attaché localement).
  • Les disques managés sont chiffrés au repos à l’aide d’Azure Storage Service Encryption, où les clés de chiffrement sont des clés gérées, stockées par Microsoft dans Azure.
  • Pour une comparaison des options de chiffrement des disques managés, consultez le tableau de comparaison du chiffrement des disques managés
  • Les ports de gestion doivent être fermés sur vos machines virtuelles : les ports de gestion à distance ouverts exposent votre machine virtuelle à un niveau de risque élevé des attaques basées sur Internet. Ces attaques tentent d’attaquer par force brute les informations d’identification afin d’obtenir un accès administrateur à l’ordinateur.
  • Activez Accès juste-à-temps (JIT) pour les machines virtuelles Azure
  • Utilisez Azure Bastion via Remote Desktop Protocol (RDP).
  • Verrouillez les ports et autorisez uniquement le trafic d’application nécessaire à l’aide de Pare-feu Azure, un pare-feu géré en tant que service (FaaS) qui accorde ou refuse l’accès au serveur en fonction de l’adresse IP d’origine.
  • Utiliser des groupes de sécurité réseau (NSG) pour filtrer le trafic réseau entre ressources Azure sur un réseau virtuel Azure
  • Utilisez des groupes de sécurité d’application pour regrouper les serveurs ayant des exigences similaires en matière de filtrage des ports et des fonctions similaires, comme les serveurs Web et les serveurs de bases de données.
  • Pour les serveurs Web et d’application, utilisez la protection Azure Distributed Denial of Service (DDoS). Les attaques DDoS sont conçues pour submerger et épuiser les ressources réseau, rendant ainsi les applications lentes ou non réactives. Les attaques DDoS ciblent souvent les interfaces utilisateur. La protection Azure contre les attaques DDoS élimine le trafic réseau indésirable avant qu’il n’affecte la disponibilité des services
  • Utilisez des extensions de machines virtuelles pour traiter les logiciels malveillants, l’état souhaité, la détection des menaces, la prévention et l’élimination des menaces au niveau du système d’exploitation, de la machine et du réseau :
  • Utilisez Azure Policy pour créer des règles d’entreprise qui peuvent être appliquées à votre environnement. Les stratégies Azure évaluent les ressources Azure en comparant les propriétés de ces ressources à des règles définies au format JSON.
  • Azure Blueprints permet aux architectes cloud et aux groupes centraux responsables des technologies de l’information de définir un ensemble reproductible de ressources Azure qui implémentent et respectent les normes, modèles et exigences d’une organisation. Les Azure Blueprints sont différents des stratégies Azure.
  • Utilisez Windows Server 2019 ou Windows Server 2022 pour être conforme à la norme FIPS avec SQL Server sur les machines virtuelles Azure.

fonctionnalités SQL Server

Voici une liste de vérification rapide des meilleures pratiques pour les paramètres de configuration de SQL Server lorsque vous exécutez vos instances SQL dans une machine virtuelle Azure en production :

Fonctionnalités Azure

Voici une liste de vérification rapide des meilleures pratiques pour obtenir une aide spécifique à Azure lorsque vous exécutez votre instance SQL Server sur machines virtuelles Azure :

Configuration HADR

La liste de vérification de cette section décrit les meilleures pratiques en matière de HADR pour SQL Server sur les machines virtuelles Azure.

Les fonctionnalités de haute disponibilité et récupération d’urgence (HADR), telles que le groupe de disponibilité Always On et l’instance de cluster de basculement, reposent sur la technologie de cluster de basculement Windows Server sous-jacente. Examinez les meilleures pratiques pour modifier vos paramètres HADR afin de mieux prendre en charge l’environnement cloud.

Pour votre cluster Windows, prenez en compte les meilleures pratiques suivantes :

  • Déployez vos machines virtuelles SQL Server sur plusieurs sous-réseaux quand cela est possible afin d’éviter de dépendre d’Azure Load Balancer ou d’un nom de réseau distribué (DNN) pour acheminer le trafic vers votre solution HADR.
  • Définissez des paramètres moins agressifs pour le cluster afin d’éviter les pannes inattendues dues à des défaillances momentanées du réseau ou à la maintenance de la plateforme Azure. Pour plus d’informations, consultez les paramètres de pulsation et de seuil. Pour Windows Server 2012 et les versions ultérieures, utilisez les valeurs recommandées suivantes :
    • SameSubnetDelay : 1 seconde
    • SameSubnetThreshold : 40 pulsations
    • CrossSubnetDelay : 1 seconde
    • CrossSubnetThreshold : 40 pulsations
  • Placez vos machines virtuelles dans un groupe à haute disponibilité ou dans différentes zones de disponibilité. Pour plus d’informations, consultez les paramètres de disponibilité des machines virtuelles.
  • Utilisez une seule carte réseau par nœud de cluster.
  • Configurez le vote de quorum du cluster pour utiliser trois votes ou plus (toujours par nombre impair). N’attribuez pas de votes à des régions de reprise d’activité.
  • Surveillez attentivement les limites de ressources pour éviter les redémarrages ou les basculements inattendus dus à des contraintes de ressources.
    • Assurez-vous que le système d’exploitation, les pilotes et SQL Server disposent de la version la plus récente.
    • Optimisez les performances de SQL Server sur les machines virtuelles Azure. Consultez les autres sections de cet article pour en savoir plus.
    • Réduisez ou répartissez la charge de travail pour éviter d’atteindre les limites de ressources.
    • Passez à une machine virtuelle ou à un disque dont les limites sont plus élevées pour éviter les contraintes.

Pour votre groupe de disponibilité SQL Server ou votre instance de cluster de basculement, tenez compte des meilleures pratiques suivantes :

  • Si vous rencontrez fréquemment des échecs inattendus, suivez les meilleures pratiques en matière de performances décrites dans la suite de cet article.
  • Si l’optimisation des performances de la machine virtuelle SQL Server ne résout pas vos basculements inattendus, envisagez de relâcher la supervision pour le groupe de disponibilité ou l’instance du cluster de basculement. Toutefois, cela ne résout pas la source sous-jacente du problème et peut masquer les symptômes en réduisant la probabilité d’échec. Vous devrez peut-être encore examiner et résoudre la cause racine sous-jacente. Pour Windows Server 2012 ou les versions ultérieures, utilisez les valeurs recommandées suivantes :
    • Délai d’expiration du bail : Utilisez cette équation pour calculer la valeur maximale du délai d’expiration du bail :
      Lease timeout < (2 * SameSubnetThreshold * SameSubnetDelay).
      Commencez par 40 secondes. Si vous utilisez les valeurs assouplies de SameSubnetThreshold et SameSubnetDelay qui ont été recommandées précédemment, ne dépassez pas 80 secondes pour la valeur du délai d’expiration du bail.
    • Nombre maximal d’échecs au cours d’une période spécifiée : Définissez cette valeur sur 6.
  • Quand vous utilisez le nom de réseau virtuel (VNN) et Azure Load Balancer pour vous connecter à votre solution HADR, spécifiez MultiSubnetFailover = true dans la chaîne de connexion, même si votre cluster s’étend sur un seul sous-réseau.
    • Si le client ne prend pas en charge MultiSubnetFailover = True, il peut être nécessaire de définir RegisterAllProvidersIP = 0 et HostRecordTTL = 300 pour mettre en cache les informations d’identification du client pour des durées plus courtes. Toutefois, cela peut entraîner des requêtes supplémentaires sur le serveur DNS.
  • Pour vous connecter à votre solution HADR à l’aide du nom réseau distribué (DNN), tenez compte des points suivants :
    • Vous devez utiliser un pilote client qui prend en charge MultiSubnetFailover = True, et ce paramètre doit figurer dans la chaîne de connexion.
    • Utilisez un port DNN unique dans la chaîne de connexion lorsque vous vous connectez à l’écouteur DNN pour un groupe de disponibilité.
  • Utilisez une chaîne de connexion de mise en miroir de bases de données pour un groupe de disponibilité de base afin de contourner le besoin d’un équilibreur de charge ou d’un DNN.
  • Validez la taille de secteur de vos disques durs virtuels avant de déployer votre solution de haute disponibilité pour éviter les E/S mal alignées. Pour plus d’informations, voir KB3009974.
  • Si le moteur de base de données SQL Server, l’écouteur de groupe de disponibilité Always On ou la sonde d'intégrité de l’instance de cluster de basculement sont configurés pour utiliser un port entre 49 152 et 65 536 (la plage de port dynamique par défaut pour le protocole TCP/IP), ajoutez une exclusion pour chaque port. Cela empêche ainsi que le même port soit attribué dynamiquement à d’autres systèmes. L’exemple suivant crée une exclusion pour le port 59 999 :
    netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent

Résolution des problèmes de performances

Vous trouverez ci-dessous une liste de ressources qui vous aideront à résoudre les problèmes de performance de SQL Server.

Envisagez d’activer la fonctionnalité SQL Assessment pour SQL Server sur des machines virtuelles Azure.

Consultez d’autres articles relatifs aux machines virtuelles avec SQL Server à la page Vue d’ensemble de SQL Server sur les machines virtuelles Azure. Si vous avez des questions sur les machines virtuelles SQL Server, consultez le Forum aux Questions.