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.
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.