SQL Server 2016 CPU mit hohem Leerlauf und Abfragen extrem langsam

10

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?

Andreas Steidle
quelle
Könnte eine schlechte Installation sein. Betrachten Sie eine Neuinstallation des Betriebssystems und von SQL. Alle Service Packs. Sie können solche Dinge für immer verfolgen. Wenn das Problem weiterhin besteht, können Sie die Installation vernünftigerweise beenden.
Paparazzo
7
Haben Sie ein Antivirenprogramm installiert? Ich würde einen Ausschluss für die ausführbare SQL Server-Datei sowie für MDF-, NDF- und LDF-Dateien hinzufügen.
Randolph West
1
Haben Sie sich auch mit Energiespareinstellungen befasst?
Randolph West
Ich erinnere mich an ein ähnliches Verhalten von 2005, als die Datenbankoption aktiviert auto_update_statistics_asyncwar.
Roger Wolf
Versuchen Sie, die Datenbank offline zu schalten und die CPU-Auslastung zu überprüfen. Wenn die CPU-Auslastung nicht sinkt, liegt das Problem mit dem SQL Server-Datenbankmodul vor.
Muhammad Yousaf Sulahria

Antworten:

3

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.

fx1974
quelle
In der Zwischenzeit stellte ich fest, dass das Starten / Stoppen einer anderen Software mit übermäßiger Speichernutzung (wie Visual Studio) das Problem auf reproduzierbare Weise verschlimmert. Ich würde also bestätigen, dass es sich um ein Speicherproblem handelt. SQL-Server beginnt mit dem Paging, wenn zu viel Druck ausgeübt wird.
Andreas Steidle