Pourquoi les statistiques de mise à jour de l'analyse complète utilisent-elles 100% du processeur sur SQL Server 2014 alors qu'elles utilisent peut-être 20% du processeur sur SQL Server 2008 R2, pour les mêmes tables, avec des capacités matérielles similaires?
J'ai regardé d' MAXDOP
autres options et je ne vois vraiment rien qui se démarque. Je me rends compte qu'il pourrait y avoir des paramètres qui pourraient provoquer cela, mais les paramètres sont très similaires pour les deux bases de données (par exemple, MAXDOP
4 pour les deux, les deux ayant plusieurs cœurs). Les deux sont Enterprise Edition.
Y a-t-il quelque chose de "différent" dans SQL Server 2014 par rapport à SQL Server 2008 R2 qui pourrait expliquer cela? J'ai l'option de mémoire à 90% pour les deux serveurs. Des réflexions sur ce qu'il faut rechercher?
J'exécute des statistiques de mise à jour avec une analyse complète (100%) une fois par semaine sur deux serveurs utilisant SQL Server 2008 R2 / SP3 et SQL Server 2014 / SP2, et les bases de données ont la même structure. Sur le serveur 2008 R2, les statistiques de mise à jour de deux très grandes tables prennent plusieurs heures, ce que j'attends, mais le processeur reste en dessous de 20% environ en tout temps. Sur le serveur 2014, cependant, le processeur passe à 100% pendant environ 40 minutes. Les tableaux sont un peu plus petits sur le serveur 2014. Je vois cela en utilisant les menus d'analyse de SQL Monitor.
Voici la sortie du fichier journal Ola sur le serveur SQL 2014, le CPU passe à 100% d'environ 2:10 à 2:45:
Date and time: 2017-06-24 02:10:20
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000005_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:07:48
Date and time: 2017-06-24 02:18:08
Date and time: 2017-06-24 02:18:08
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000006_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:32:22
Date and time: 2017-06-24 02:50:30
Voici la sortie du fichier journal Ola sur le SQL Server 2008 R2 pour les deux statistiques ci-dessus, mais le processeur atteint peut-être 15%:
Date and time: 2017-06-24 03:30:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000003_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:05:00
Date and time: 2017-06-24 03:35:32
Date and time: 2017-06-24 03:35:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000004_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:52:31
Date and time: 2017-06-24 04:28:03
Je ne peux pas les exécuter avec le serveur maxdop = 1 car cela élimine toute génération de plan parallèle et cela pourrait nuire à l'application. J'ai l'intention d'aller dans la direction opposée et de l'augmenter à 8 (il y a 16 cœurs sur la boîte) et de voir ce qui se passe. Peut aller plus vite pour réduire la durée d'ancrage du processeur. Ce travail s'exécute alors que la plupart des utilisateurs sont partis.
la source
tempdb
configuration est-elle la même? Il peut être utilisé enUPDATE STATISTICS
cours d'exécution, ce qui pourrait également être un problème.Réponses:
Les mises à jour des statistiques peuvent aller en parallèle sur la base de nombreuses options différentes dans SQL Server:
Dans les versions ultérieures de SQL Server (2016 et versions ultérieures), cela devient encore plus compliqué:
Comme vous l'avez noté, celui de 2008R2 est à filetage unique, tandis que celui de 2014 est à filetage multiple (finissant ainsi plus rapidement, mais maximisant le processeur pendant son fonctionnement.)
Pour trouver le bon équilibre pour vos travaux de statistiques, pensez à:
la source
Réponse du wiki communautaire :
Meilleure estimation: le plan choisi pour mettre à jour les statistiques est parallèle ou plus parallèle sur la box 2014 que sur la box 2008 R2.
Les statistiques de mise à jour parallèle pour existent
fullscan
depuis 2005, et pour les statistiques échantillonnées à partir de 2016, consultez Ajouts de l'optimiseur de requête dans SQL Server 2016 par Gjorgji Gjeorgjievski sur le blog du moteur de base de données SQL Server.Si vous avez Enterprise Edition, vous pouvez utiliser le gouverneur de ressources pour limiter le processeur utilisé par votre tâche de maintenance.
Pensez également à voter pour le paramètre Ajouter à la
MAXDOP
suggestion Connect pour mettre à jour les statistiques de Javier Villegas.Questions et réponses connexes: mise à jour des statistiques parallèles
la source