Ich habe eine ca. 10 Tage alte Installation von WinServer2012R2 und SQL Server Express 2016 zum Testen. Ich bin der einzige Benutzer auf diesem Computer. Eine Datenbank mit einem .bak von SQL Server 2005 von ~ 250 MB wird ohne Probleme wiederhergestellt. Nach einem Neustart des Computers verwendet der Prozess "SQL Server NT - 64 Bit" 0% CPU.
Nach ein paar Minuten oder Stunden und einigen einfachen Abfragen (keine Updates / Einfügungen!) Von der SSMS-CPU-Auslastung von "SQL Server NT - 64 Bit" springt plötzlich auf ~ 15% und bleibt dort, auch im Leerlauf. Ab diesem Zeitpunkt dauern Abfragen, die normalerweise weniger als eine Sekunde dauern, plötzlich 2 Minuten. Während einer tatsächlichen Abfrage erhöht sich die CPU-Auslastung NICHT. Der Server wird in diesem Zustand praktisch unbrauchbar.
Nur das Verbinden von SQL Server Profiler dauert dann> 30 Sekunden. Neben meinen eigenen Abfragen werden nur sehr wenige Abfragen von SQLServerCEIP / SQLTELEMETRY angezeigt, ~ 3 pro Minute.
Ein Neustart von SQL-Server löst das Problem nicht. Die CPU-Auslastung springt direkt auf ~ 15% zurück. Auch nach Stunden wird SQL-Server nicht wiederhergestellt. Nur ein Neustart des gesamten Computers löst das Problem.
Da es sich um eine "out of the box" -Installation handelt, gibt es nur eine kleine Datenbank, praktisch keine Abfragen, nur mich als Benutzer und wahrscheinlich keine Sperren. In den vielen Artikeln zu regulären SQL Server-Leistungsproblemen wird über viele Dinge gesprochen, die nicht zutreffen trifft hier nicht wirklich zu. Es scheint, dass SQL-Server sich ausschließlich auf eine interne Aufgabe konzentrieren möchte.
Dies ist eine virtuelle Maschine mit 2 GB RAM und Dual Xeon bei 2 GHz. Ich habe auch VS2016 drauf und es ist sehr schnell. Kein Antivirenprogramm, nicht einmal Windows Defender. Schon spät hier. Ich werde das sp_whoisactive morgen versuchen. Ich frage mich wirklich, WAS SQL-Server dort macht ... Auf dem vorherigen Computer mit 1 GB lief dieselbe Datenbank 10 Jahre lang ohne Probleme unter SQLServer2005 ...
Ich bin kein SQL-Profiler-Experte. Wo soll ich anfangen zu suchen?
quelle
auto_update_statistics_async
war.Antworten:
Da Ihre CPU-Auslastung gering ist (und Sie einen großartigen CPU-Satz haben), würde ich zuerst den Speicherdruck prüfen. Mit SQL Express 2016 sind Sie auf 1410 MB Arbeitsspeicher beschränkt, Ihre VM verfügt jedoch nur über 2 GB. Geben Sie Ihrer VM 1 GB mehr Speicher und prüfen Sie, ob dies hilfreich ist. Sie können Ihr SQL Server-Protokoll auch überprüfen, wenn der Speicher in eine Datei ausgelagert wird.
Wenn dies nicht funktioniert, setzen Sie die Datenbankeinstellung LEGACY_CARDINALITY_ESTIMATION auf ON. Referenz: Verwenden von DB Compatibility Level 130 mit Old CE in SQL Server 2016 . Wir sind mit einigen unserer Upgrades darauf gestoßen. Die Ergebnisse variieren mit jeder Datenbank.
quelle
Der folgende Patch beschreibt ein ähnliches Problem. Es kann sich lohnen, es zu versuchen:
https://support.microsoft.com/en-us/help/3195888/fix-high-cpu-usage-causes-performance-issues-in-sql-server-2016
quelle