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.
quelle
tempdb
Konfiguration gleich? Es kann während derUPDATE STATISTICS
Ausführung verwendet werden, sodass dies auch ein Problem sein kann.Antworten:
Statistikaktualisierungen können basierend auf vielen verschiedenen Optionen in SQL Server parallel erfolgen:
In späteren Versionen von SQL Server (2016 und neuer) wird dies noch komplizierter:
Wie Sie bereits bemerkt haben, wird Ihr 2008R2 mit einem Thread ausgeführt, während der 2014R mit mehreren Threads betrieben wird (wodurch die Ausführung schneller erfolgt, die CPU jedoch während der Ausführung maximal ausgelastet ist).
Um die richtige Balance für Ihre Statistikjobs zu finden, denken Sie an:
quelle
Antwort des Community-Wikis :
Beste Vermutung: Der Plan zum Aktualisieren der Statistiken ist für die Box 2014 entweder parallel oder paralleler als für die Box 2008 R2.
Parallele Aktualisierungsstatistiken für
fullscan
gibt es seit 2005, und Stichprobenstatistiken ab 2016 finden Sie unter Ergänzungen zum Abfrageoptimierungsprogramm in SQL Server 2016 von Gjorgji Gjeorgjievski im SQL Server Database Engine-Blog.Wenn Sie über Enterprise Edition verfügen, können Sie Resource Governor verwenden , um die von Ihrem Wartungsjob verwendete CPU zu begrenzen.
Beachten Sie auch für den Vorschlag Connect Abstimmung Add
MAXDOP
Parameter zu aktualisieren Statistiken von Javier Villegas.Verwandte Fragen und Antworten: Parallel Statistics Update
quelle