Warum verbrauchen vollständige Scan-Aktualisierungsstatistiken 100% der CPU unter SQL Server 2014, wenn möglicherweise 20% der CPU unter SQL Server 2008 R2 für dieselben Tabellen mit ähnlichen Hardwarefunktionen verwendet werden?
Ich habe mir MAXDOP
andere Optionen angesehen und sehe wirklich nichts, was auffällt. Mir ist klar, dass es Einstellungen geben könnte, die dies verursachen könnten, aber die Einstellungen sind für beide Datenbanken sehr ähnlich (z. B. MAXDOP
4 für beide, wobei beide mehrere Kerne haben). Beide sind Enterprise Edition.
Gibt es in SQL Server 2014 etwas "anderes" als in SQL Server 2008 R2, das dies erklären könnte? Ich habe die Speicheroption bei 90% für beide Server. Irgendwelche Gedanken darüber, wonach zu suchen ist?
Ich führe einmal pro Woche Aktualisierungsstatistiken mit vollständigem (100%) Scan auf zwei Servern mit SQL Server 2008 R2 / SP3 und SQL Server 2014 / SP2 aus, und die Datenbanken haben dieselbe Struktur. Auf dem 2008 R2-Server dauert die Aktualisierung von zwei sehr großen Tabellen mehrere Stunden, was ich erwarte, aber die CPU bleibt die ganze Zeit über unter 20% ausgelastet. Auf dem Server von 2014 geht die CPU jedoch für etwa 40 Minuten auf 100%. Die Tabellen sind auf dem Server 2014 etwas kleiner. Ich sehe dies anhand der SQL Monitor-Analysemenüs.
Hier ist die Ausgabe der Ola-Protokolldatei auf dem SQL Server 2014, die CPU geht von etwa 2:10 bis 2:45 auf 100%:
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
Hier ist die Ausgabe der Ola-Protokolldatei auf dem 2008 R2 SQL Server für die beiden oben genannten Statistiken, aber die CPU beträgt möglicherweise 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
Ich kann sie nicht mit Server maxdop = 1 ausführen, da dadurch die gesamte parallele Planerstellung entfällt und die Anwendung beschädigt werden kann. Ich plane, in die entgegengesetzte Richtung zu gehen und sie auf 8 zu erhöhen (es gibt 16 Kerne auf der Box) und zu sehen, was passiert. Kann schneller gehen, um die Zeitspanne zu verkürzen, in der die CPU gebunden ist. Dieser Job wird ausgeführt, während Benutzer meistens nicht erreichbar sind.
tempdb
Konfiguration gleich? Es kann während derUPDATE STATISTICS
Ausführung verwendet werden, sodass dies auch ein Problem sein kann.