Mises à jour et options de configuration recommandées pour SQL Server avec des charges de travail hautes performances

Cet article inclut une liste des améliorations des performances et des options de configuration disponibles pour SQL Server 2012 et versions ultérieures.

Version d’origine du produit : SQL Server 2014, SQL Server 2012
Numéro de la base de connaissances d’origine : 2964518

Cet article décrit les améliorations de performances et les modifications disponibles pour SQL Server versions 2014 et SQL Server 2012 par le biais de différentes mises à jour de produit et options de configuration. Vous pouvez envisager d’appliquer ces mises à jour afin d’améliorer les performances de la instance de SQL Server. Le degré d’amélioration que vous constatez dépend de divers facteurs, notamment le modèle de charge de travail, les points de contention, la disposition du processeur (nombre de groupes de processeurs, sockets, nœuds NUMA, cœurs dans un nœud NUMA) et la quantité de mémoire présente dans le système. SQL Server équipe de support technique a utilisé ces mises à jour et modifications de configuration pour obtenir des gains de performances raisonnables pour les charges de travail client qui utilisaient des systèmes matériels avec plusieurs nœuds NUMA et un grand nombre de processeurs. L’équipe de support continue à mettre à jour cet article avec d’autres mises à jour à l’avenir.

Systèmes haut de gamme Un système haut de gamme a généralement plusieurs sockets, huit cœurs ou plus par socket, et un demi-téraoctet ou plus de mémoire.

Remarque

Dans SQL Server 2016 et versions ultérieures, la plupart des indicateurs de trace mentionnés dans cet article sont le comportement par défaut et vous n’avez pas besoin de les activer dans ces versions.

Les recommandations sont regroupées en trois tables comme suit :

  • Le tableau 1 contient les mises à jour et indicateurs de trace les plus fréquemment recommandés pour la scalabilité sur les systèmes haut de gamme.
  • Le tableau 2 contient des recommandations et des conseils pour un réglage supplémentaire des performances.
  • Le tableau 3 contient des correctifs de scalabilité supplémentaires qui ont été inclus avec une mise à jour cumulative.

Tableau 1. Mises à jour importantes et indicateurs de trace pour les systèmes haut de gamme

Passez en revue le tableau suivant et activez les indicateurs de trace dans la colonne Indicateur de trace après vous être assuré que votre instance de SQL Server répond aux exigences de la colonne Versions applicables et plages de build.

Remarque

  • La version et la build applicables indiquent la mise à jour spécifique dans laquelle l’indicateur de modification ou de trace a été introduit. Si aucune cu n’est spécifiée, toutes les cu du sp sont incluses.

  • Non applicable Version et build indiquent la mise à jour spécifique dans laquelle l’indicateur de modification ou de trace est devenu le comportement par défaut. Par conséquent, il suffit d’appliquer cette mise à jour pour obtenir les avantages.

Importante

Lorsque vous activez des correctifs avec des indicateurs de trace dans des environnements Always On, n’oubliez pas que vous devez activer les indicateurs de correctif et de trace sur tous les réplicas qui font partie du groupe de disponibilité.

Scénario et symptôme à prendre en compte Indicateur de trace Plages de versions et de build applicables Versions et plages de build non applicables Lien article/blog de la Base de connaissances qui fournit plus de détails
  • Vous rencontrez des attentes CMEMTHREAD élevées.
  • SQL Server est installé sur les systèmes avec au moins 8 cœurs par socket.
T8048
  • SQL Server RTM 2012 vers le Service Pack (SP)/CU actuel
  • SQL Server 2014 RTM vers SP1
  • SQL Server 2014 SP2 à SP/CU actuel
  • SQL Server 2016 RTM à SP/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
  • Vous rencontrez des attentes CMEMTHREAD élevées.
  • SQL Server est installé sur les systèmes avec au moins 8 cœurs par socket.
T8079 SQL Server 2014 SP2 à SP/CU actuel
  • SQL Server 2016 RTM à SP/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
  • Vous utilisez des fonctionnalités qui s’appuient sur le cache du pool de journaux. (par exemple, Always On)
  • SQL Server est installé sur les systèmes avec plusieurs sockets.
T9024 Package de mise à jour cumulative 3 pour SQL Server 2012 Service Pack 1 vers SP2 SQL Server 2014 RTM
  • SQL Server 2012 SP3 à SP/CUSQL actuel
  • Server 2014 SP1 vers sp/CU actuel
  • SQL Server 2016 RTM à SP/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
CORRECTIF : Valeur élevée du compteur « attentes d’écriture du journal » sur un instance SQL Server 2012 ou SQL Server 2014
Votre instance de SQL Server gère des milliers de réinitialisations de connexion en raison du regroupement de connexions. T1236 Package de mise à jour cumulative 9 pour SQL Server 2012 Service Pack 1 vers SP2 Mise à jour cumulative 1 pour SQL Server 2014
  • SQL Server 2012 SP3 à SP/CUSQL actuel
  • Server 2014 SP1 vers SP/CUSQL actuel
  • Server 2016 RTM vers sp/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
  • Votre charge de travail d’application implique une utilisation fréquente de tempdb (création et suppression de tables temporaires ou de variables de table).
  • Vous remarquez que les demandes des utilisateurs attendent des ressources de page tempdb en raison d’une contention d’allocation.
T1118
  • SQL Server 2012 RTM à sp/CU actuel
  • SQL Server 2014 RTM à sp/CU actuel
  • SQL Server 2016 RTM à SP/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
Améliorations de la concurrence pour la base de données tempdb

NOTE Activez l’indicateur de trace et ajoutez plusieurs fichiers de données pour la base de données tempdb.
  • Vous avez plusieurs fichiers de données tempdb.
  • Les fichiers de données sont d’abord définis sur la même taille.
  • En raison d’une activité intensive, les fichiers tempdb rencontrent une croissance et tous les fichiers ne se développent pas en même temps et provoquent une contention d’allocation.
T1117
  • SQL Server 2012 RTM à sp/CU actuel
  • SQL Server 2014 RTM à sp/CU actuel
  • SQL Server 2016 RTM à SP/CU actuel
  • SQL Server rtm 2017 à sp/CU actuel
Recommandations pour réduire la contention d’allocation dans SQL Server base de données tempdb
Les conflits de verrouillage tournant lourds SOS_CACHESTORE ou vos plans sont fréquemment supprimés sur les charges de travail de requête ad hoc. T174 Aucun
  • Les entrées du cache du plan sont supprimées en raison de la croissance d’autres caches ou commis de mémoire
  • Consommation élevée du processeur en raison de recompilations fréquentes de requêtes
T8032
  • SQL Server 2012 RTM à sp/CU actuel
  • SQL Server 2014 RTM à sp/CU actuel
Aucun
Les statistiques existantes ne sont pas fréquemment mises à jour en raison du grand nombre de lignes dans la table. T2371
  • SQL Server 2012 RTM à sp/CU actuel
  • SQL Server 2014 RTM à sp/CU actuel
Aucun
  • L’exécution des travaux de statistiques prend beaucoup de temps.
  • Impossible d’exécuter plusieurs travaux de mise à jour des statistiques en parallèle.
T7471 SQL Server 2014 SP1 CU6 à SP/CU actuel Aucun Amélioration des performances des statistiques de mise à jour avec SQL 2014 & SQL 2016
La commande CHECKDB prend beaucoup de temps pour les bases de données volumineuses.
  • T2562
  • T2549
    • SQL Server 2012 RTM à sp/CU actuel
    • SQL Server 2014 RTM à sp/CU actuel
    Aucun
    La commande CHECKDB prend beaucoup de temps pour les bases de données volumineuses. T2566
    • SQL Server 2012 RTM à sp/CU actuel
    • SQL Server 2014 RTM à sp/CU actuel
    Aucun
    L’exécution de requêtes d’entrepôt de données simultanées qui prennent beaucoup de temps de RESOURCE_SEMAPHORE_QUERY_COMPILE compilation entraîne des attentes. T6498 Package de mise à jour cumulative 6 pour SQL Server 2014 vers SP1
    • SQL Server 2014 SP2 à SP/CUSQL actuel
    • Server 2016 RTM vers sp/CU actuel
    • SQL Server rtm 2017 à sp/CU actuel
    Vous résolvez des problèmes de performances de requête spécifiques Les correctifs de l’optimiseur sont désactivés par défaut. T4199
    • SQL Server 2012 RTM à SP4
    • SQL Server rtm 2014 au plus récent
    Aucun
    Vous rencontrez des performances lentes à l’aide d’opérations de requête avec des types de données spatiales.
    • T6532
    • T6533
    • T6534
    • SQL Server 2012 SP3 à SP/CU actuel
    • SQL Server 2014 SP2 à SP/CU actuel
      • SQL Server 2016 RTM à SP/CU actuel
      • SQL Server rtm 2017 à sp/CU actuel
        • Les requêtes rencontrent SOS_MEMORY_TOPLEVELBLOCKALLOCATOR et attendent CMEMTHREAD.
        • L’espace d’adressage virtuel disponible pour le processus SQL Server est faible.
        T8075
        • SQL Server 2012 SP2 CU8 à SP/CU actuel
        • SQL Server 2014 RTM CU10 à SP/CU actuel
        • SQL Server 2016 RTM à SP/CU actuel
        • SQL Server rtm 2017 à sp/CU actuel
        CORRECTIF : Erreur de mémoire insuffisante lorsque l’espace d’adressage virtuel du processus de SQL Server est faible en SQL Server
        • SQL Server est installé sur un ordinateur avec de grandes quantités de mémoire.
        • La création de bases de données prend beaucoup de temps.
        T3449
        • SQL Server 2012 SP3 CU3 à SP/CU actuel
        • SQL Server 2014 RTM CU14 à RTM CU actuel
        • SQL Server 2014 SP1 CU7 à SP/CU actuel
        • SQL Server 2016 RTM à SP/CU actuel
        • SQL Server rtm 2017 à sp/CU actuel
        CORRECTIF : SQL Server création d’une base de données sur un système avec un grand volume de mémoire prend plus de temps que prévu

        Tableau 2. Considérations générales et meilleures pratiques pour améliorer les performances de votre instance de SQL Server

        Passez en revue le contenu de l’article de la Base de connaissances/ressource en ligne de la documentation et envisagez d’implémenter les instructions dans la colonne Actions recommandées.

        Article de la Base de connaissances/Ressource de la documentation en ligne Actions recommandées
        Configurer l’option de configuration de serveur max degree of parallelism Utilisez la procédure stockée sp_configure pour apporter des modifications de configuration à Configurer l’option de configuration de serveur de degré maximal de parallélisme pour votre instance de SQL Server conformément à l’article de la Base de connaissances.
        Limites de capacité de calcul par édition de SQL Server Êdition Entreprise avec licence de licence d’accès client (CAL) serveur + est limité à 20 cœurs par SQL Server instance. Il n’existe aucune limite sous le modèle de licence de serveur core. Envisagez de mettre à niveau votre édition de SQL Server vers la référence SKU appropriée pour tirer parti de toutes les ressources matérielles.
        Performances lentes sur Windows Server lors de l’utilisation du mode de gestion de l’alimentation « équilibré » Consultez l’article et collaborez avec votre administrateur Windows pour implémenter l’une des solutions indiquées dans la section « Résolution » de l’article.
        Affectez manuellement des nœuds NUMA aux K-groupes.
        Optimiser pour les charges de travail ad hocPARAMÉTRISATION FORCÉE Les entrées du cache du plan sont supprimées en raison de la croissance dans d’autres caches ou commis de mémoire. Vous pouvez également rencontrer l’éviction du cache du plan lorsque le cache atteint son nombre maximal d’entrées. En plus de l’indicateur de trace 8032 décrit ci-dessus, envisagez l’option de serveur Optimiser pour les charges de travail ad hoc et également l’option de base de données FORCED PARAMETERIZATION .
        Comment réduire la pagination de la mémoire du pool de mémoires tampons dans SQL ServerConsidérations relatives à la configuration et au dimensionnement de la mémoire mémoire dans SQL Server 2012 et versions ultérieures Affectez le droit d’utilisateur Activer l’option Verrouiller les pages en mémoire (Windows) au compte de démarrage du service SQL. Consultez Comment activer la fonctionnalité « pages verrouillées » dans SQL Server 2012. Définissez la mémoire maximale du serveur sur environ 90 % de la mémoire physique totale. Assurez-vous que le paramètre Options de configuration de la mémoire du serveur prend en compte la mémoire à partir des nœuds configurés pour utiliser les paramètres de masque d’affinité.
        SQL Server et pages volumineuses expliquées...Options de paramétrage pour SQL Server lors de l’exécution dans des charges de travail hautes performances Envisagez d’activer TF 834 si vous avez un serveur avec une grande quantité de mémoire, en particulier avec une charge de travail analytique ou d’entreposage de données. Gardez à l’esprit que TF 834 n’est pas recommandé si vous utilisez des index columnstore.
        Description des options « access case activée cache bucket count » et « access case activée cache quota » disponibles dans la procédure stockée sp_configure Utilisez access case activée cache Server Configuration Options pour configurer ces valeurs conformément aux recommandations de l’article de la Base de connaissances. Les valeurs recommandées pour les systèmes haut de gamme sont les suivantes :
        « nombre de compartiments de cache case activée d’accès » : 256
        « access case activée cache quota » : 1024

        Indicateurs de requête d’allocation de mémoireALTER WORKLOAD GROUP Si vous avez de nombreuses requêtes qui épuisent les allocations de mémoire volumineuses, réduisez request_max_memory_grant_percent pour le groupe de charge de travail par défaut dans la configuration du gouverneur de ressources de 25 % à une valeur inférieure. De nouvelles options d’allocation de mémoire de requête sont disponibles (min_grant_percent et max_grant_percent) dans SQL Server
        Initialisation instantanée d’un fichier Collaborez avec votre administrateur Windows pour accorder au compte de service SQL Server le droit d’utilisateur « Effectuer des tâches de maintenance en volume » conformément aux informations de la rubrique de la documentation en ligne.
        Considérations relatives aux paramètres « croissance automatique » et « autoshrink » dans SQL Server Vérifiez les paramètres actuels de votre base de données et assurez-vous qu’ils sont configurés conformément aux recommandations de l’article de la Base de connaissances.
        Points de contrôle de base de données (SQL Server) Envisagez d’activer des points de contrôle indirects sur les bases de données utilisateur pour optimiser le comportement des E/S dans SQL Server 2012 et 2014.
        CORRECTIF : Synchronisation lente lorsque les disques ont des tailles de secteur différentes pour les fichiers journaux de réplica principal et secondaire dans SQL Server environnements de groupe de disponibilité et de journalisation Si vous avez un groupe de disponibilité où le journal des transactions sur le réplica principal se trouve sur un disque avec une taille de secteur de 512 octets et que le journal des transactions de l’réplica secondaire se trouve sur un lecteur avec une taille de secteur de 4 Ko, vous pouvez rencontrer un problème où la synchronisation est lente. Dans ce cas, l’activation de TF 1800 doit corriger le problème. Pour plus d’informations, consultez Indicateur de trace 1800.
        Si votre SQL Server n’est pas déjà lié au processeur et qu’une surcharge de 1,5 % à 2 % est négligeable pour vos charges de travail, nous vous recommandons d’activer TF 7412 comme indicateur de trace de démarrage. Cet indicateur permet un profilage léger dans SQL Server 2014 SP2 ou version ultérieure, ce qui vous permet d’effectuer des dépannages de requête en direct dans des environnements de production.

        Tableau 3. Correctifs de performances inclus dans une mise à jour cumulative

        Passez en revue la description dans la colonne Symptômes et appliquez les mises à jour requises dans la colonne Mise à jour requise dans les environnements applicables. Vous pouvez consulter l’article de la Base de connaissances pour plus d’informations sur les problèmes respectifs. Ces recommandations ne vous obligent pas à activer des indicateurs de trace supplémentaires en tant que paramètres de démarrage. Il suffit d’appliquer la dernière mise à jour cumulative ou le Dernier Service Pack qui inclut ces correctifs pour bénéficier de l’avantage.

        Remarque

        Le nom cu dans la colonne Mise à jour requise fournit la première mise à jour cumulative de SQL Server qui résout ce problème. Une mise à jour cumulative contient tous les correctifs logiciels et toutes les mises à jour qui ont été incluses dans la version précédente SQL Server mise à jour. Par conséquent, nous vous recommandons d’installer la dernière mise à jour cumulative afin de résoudre les problèmes.

        Symptômes Mise à jour requise Article de la Base de connaissances
        Les écritures hâtif pendant la sélection pour les tables temporaires entraînent des problèmes de performances. SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        CORRECTIF : Performances médiocres sur les E/S lorsque vous exécutez l’opération select into temporary table dans SQL Server 2012
        Vous rencontrez PWAIT_MD_RELATION_CACHE ou MD_LAZYCACHE_RWLOCK attendez après l’abandon d’une ALTER INDEX ... ONLINE opération de requête. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORRECTIF : Les performances diminuent après un ALTER INDEX... L’opération ONLINE est abandonnée dans SQL Server 2012 ou SQL Server 2014
        Les requêtes s’exécutent soudainement mal sur l’édition standard du produit. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECTIF : Les threads ne sont pas planifiés uniformément dans SQL Server 2012 ou SQL Server 2014 Standard Edition
        Performances lentes en raison d’une baisse soudaine de l’espérance de vie des pages. SQL Server 2012 SP1 CU4 CORRECTIF : vous pouvez rencontrer des problèmes de performances dans SQL Server 2012
        Utilisation élevée du processeur par le moniteur de ressources sur les systèmes avec une configuration NUMA, une mémoire volumineuse et une « mémoire maximale du serveur » définies sur une valeur faible. SQL Server 2012 SP1 CU3 CORRECTIF : pic d’UC lorsqu’il n’y a pas de charge sur un serveur après l’installation SQL Server 2012 sur le serveur
        Planificateur non générateur de rendement alors que la mémoire d’allocation pour les exécutions de tri a associé de grandes allocations de mémoire sur les systèmes avec une grande quantité de mémoire installée. SQL Server 2012 SP1 CU2 CORRECTIF : Erreur 17883 lorsque vous exécutez une requête sur un serveur qui a de nombreux processeurs et une grande quantité de mémoire dans SQL Server 2012 ou dans SQL Server 2008 R2
        Planificateur sans rendement lorsque l’opérateur de tri traverse de nombreux compartiments dans le pool de mémoires tampons sur des systèmes avec une mémoire importante. SQL Server 2012 SP1 CU1 CORRECTIF : Message d’erreur « Le processus semble ne pas être en cours sur scheduler » lorsque vous exécutez une requête dans SQL Server 2012
        Utilisation élevée du processeur lorsque vous exécutez des requêtes simultanées qui prennent beaucoup de temps à compiler sur des systèmes avec plusieurs nœuds NUMA et de nombreux cœurs. SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        CORRECTIF : La charge de travail de compilation de requêtes intense n’est pas mise à l’échelle avec le nombre croissant de cœurs sur le matériel NUMA et entraîne une saturation du processeur dans SQL Server
        Les allocations de mémoire pour les opérateurs de tri prennent beaucoup de temps sur les systèmes NUMA avec une mémoire importante en raison des allocations de nœuds distants. SQL Server 2012 SP1 CU3 CORRECTIF : SQL Server problèmes de performances dans les environnements NUMA
        Erreurs de mémoire insuffisante quand SQL Server est installé sur un ordinateur NUMA avec une grande quantité de RAM et que SQL Server a un grand nombre de pages étrangères. SQL Server 2012 RTM CU1 CORRECTIF : Erreur de mémoire insuffisante lorsque vous exécutez une instance de SQL Server 2012 sur un ordinateur qui utilise NUMA
        Contention de verrouillage tournant sur SOS_CACHESTORE et SOS_SELIST_SIZED_SLOCK lorsque vous créez un index sur un type de données spatiales dans une table volumineuse. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECTIF : Ralentissement des performances dans SQL Server 2012 ou SQL Server 2014 lorsque vous générez un index sur un type de données spatiales d’une table volumineuse
        Type d’attente CMEMTHREAD élevé lorsque vous générez un index sur un type de données spatiales dans des tables volumineuses. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORRECTIF : Ralentissement des performances dans SQL Server lorsque vous générez un index sur un type de données spatiales d’une table volumineuse dans une SQL Server 2012 ou SQL Server 2014 instance
        Problèmes de performances dus aux attentes CMEMTHREAD et lors de SOS_PHYS_PAGE_CACHE l’allocation de mémoire sur des ordinateurs à mémoire volumineuse. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORRECTIF : Des problèmes de performances se produisent dans les environnements NUMA pendant le traitement des pages étrangères dans SQL Server 2012 ou SQL Server 2014
        La commande CHECKDB prend beaucoup de temps pour les bases de données volumineuses. Package de mise à jour cumulative 6 pour SQL Server 2014 CORRECTIF : la commande DBCC CHECKDB/CHECKTABLE peut prendre plus de temps dans SQL Server 2012 ou SQL Server 2014

        Remarques importantes

        References

        S’applique à

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • SQL Server 2014 Developer
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server Business Intelligence 2012
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core