Es tut mir leid, dass ich lange bin, aber ich möchte Ihnen so viele Informationen wie möglich geben, damit diese für die Analyse hilfreich sein können.
Ich weiß, dass es mehrere Posts mit ähnlichen Problemen gibt. Ich habe diese verschiedenen Posts und andere im Web verfügbare Informationen bereits verfolgt, aber das Problem bleibt bestehen.
Ich habe ein ernstes Leistungsproblem in SQL Server, das Benutzer verrückt macht. Dieses Problem dauert mehrere Jahre an und wurde bis Ende 2016 von einem anderen Unternehmen verwaltet und ab 2017 von mir verwaltet.
Mitte 2017 konnte ich das Problem beheben, indem ich den in Microsoft SQL Server 2012 Performance Dashboard Reports angegebenen Indizierungshinweisen folgte. Der Effekt war sofort, es klang wie Magie. Der Prozessor, der in den letzten Tagen fast immer zu 100% war, wurde super ruhig und das Feedback der Benutzer war durchschlagend. Sogar unser ERP-Techniker war begeistert, da es normalerweise 20 Minuten dauerte, um bestimmte Angebote zu erhalten, und er es schließlich in Sekundenschnelle tun konnte.
Im Laufe der Zeit begann es sich jedoch langsam zu verschlechtern. Ich habe es vermieden, mehr Indizes zu erstellen, aus Angst, dass zu viele Indizes die Leistung beeinträchtigen würden. Aber irgendwann musste ich diejenigen löschen, die keinen Nutzen hatten, und die neuen erstellen, die mir das Performance Dashboard vorschlägt. Aber keine Auswirkungen.
Die Langsamkeit ist im Wesentlichen beim Speichern und Beraten im ERP zu spüren.
Ich habe einen Windows Server 2012 R2 für SQL Server 2016 Enterprise (64-Bit) mit der folgenden Konfiguration:
- CPU: Intel Xeon CPU E5-2650 v3 bei 2,30 GHz
- Speicher: 84 GB
- In Bezug auf den Speicher verfügt der Server über ein Volume, das dem Betriebssystem gewidmet ist, ein anderes für die Daten und ein anderes für die Protokolle.
- 17 Datenbanken
- Benutzer:
- In der größten Datenbank sind mehr oder weniger 113 Benutzer gleichzeitig verbunden
- In einem anderen gibt es ungefähr 9 Benutzer
- In zwei von ihnen sind 3 + 3
- Der Rest hat jeweils nur 1 Benutzer
- Wir haben ein Web, das auch für die größere Datenbank schreibt, bei dem die Verwendung jedoch viel weniger regelmäßig ist und das ungefähr 20 Benutzer haben sollte.
- Größe der DBs:
- Die größte der Datenbanken hat 290 GB
- Der zweitgrößte hat 100 GB
- Der drittgrößte hat 20 GB
- Die vierten 14 GB
- Der Rest beträgt jeweils etwas mehr als 3 GB
Dies ist die Produktionsinstanz, aber wir haben auch eine Entwicklungsinstanz, von der ich glaube, dass sie für diesen Zweck ignoriert werden kann, da ich die meiste Zeit die einzige Verbindung dort bin, aber dieses Problem tritt ständig auf, selbst wenn ich nicht verbunden bin .
Der Prozessor ist fast immer so:
Wir haben Routinen, die nachts laufen (nicht problematisch) und einige, die tagsüber laufen.
Benutzer stellen über Remotedesktop eine Verbindung zu anderen Computern her, die von ODBC 32 für den Zugriff auf SQL Server konfiguriert wurden.
Das Rechenzentrum, in dem sich die Server befinden, hat 100/100 Mbit / s, und wo ich bin. Die meisten Websites sind durch MPLS und andere durch IPSec (von FO bis 4G) verlinkt. Der Anbieter hat viele Analysen durchgeführt und die Schaltung ist in Ordnung.
Die Cache-Trefferquote beträgt 99% (sowohl Benutzeranforderungen als auch Benutzersitzungen).
Die Wartezeiten sehen so aus:
Ich habe bereits Daten mit Perfmon gesammelt und habe die Ergebnisse, wenn dies bei Ihrer Analyse hilfreich ist. Ich persönlich habe aus der Analyse keine Schlussfolgerungen gezogen.
Ich zähle auf Ihre Unterstützung bei der Lösung dieses Problems und stehe zur Verfügung, um die Informationen bereitzustellen, die Sie für die Lösung für notwendig halten.
Vielen Dank.
Hier ist der sp_blitz-Abschlag (ich habe Firmennamen durch Pseudonyme ersetzt):
Priorität 1: Zuverlässigkeit :
Letzte gute DBCC CHECKDB über 2 Wochen alt
- Meister
Modell - Letzter erfolgreicher CHECKDB: 2018-02-07 15: 04: 26.560
msdb - Letzte erfolgreiche CHECKDB: 2018-02-07 15: 04: 27.740
Priorität 10: Leistung :
CPU mit ungerader Anzahl von Kernen
Knoten 0 sind 5 Kerne zugeordnet. Dies ist eine wirklich schlechte NUMA-Konfiguration.
Knoten 1 sind 5 Kerne zugeordnet. Dies ist eine wirklich schlechte NUMA-Konfiguration.
Priorität 20: Dateikonfiguration :
- TempDB auf C-Laufwerk tempdb - Die tempdb-Datenbank enthält Dateien auf dem C-Laufwerk. TempDB wächst häufig unvorhersehbar und birgt das Risiko, dass auf Ihrem Server nicht mehr genügend Speicherplatz auf dem Laufwerk C vorhanden ist und ein schwerer Absturz auftritt. C ist auch oft viel langsamer als andere Laufwerke, sodass die Leistung beeinträchtigt werden kann.
Priorität 50: Zuverlässigkeit :
- Kürzlich in der Standardablaufverfolgung protokollierte Fehler
- master - 2018-03-07 08: 43: 11.72 Anmeldefehler: 17892, Schweregrad: 20, Status: 1. 2018-03-07 08: 43: 11.72 Anmeldung Die Anmeldung für die Anmeldung 'example_user' ist aufgrund der Triggerausführung fehlgeschlagen. [KUNDE: IPADDR]
(Hinweis: Viele Fehler wie dieser aufgrund eines aktivierten Auslösers, der Benutzersitzungen einschränkt - zur Kontrolle der Nutzung der ERP-Lizenzierung)
Seitenüberprüfung nicht optimal
DATABASE_A - Die Datenbank [DATABASE_A] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_B - Die Datenbank [DATABASE_B] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_C - Die Datenbank [DATABASE_C] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_D - Die Datenbank [DATABASE_D] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_E - Die Datenbank [DATABASE_E] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_F - Die Datenbank [DATABASE_F] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_G - Die Datenbank [DATABASE_G] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_H - Die Datenbank [DATABASE_H] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_I - Die Datenbank [DATABASE_I] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_Z - Die Datenbank [DATABASE_Z] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_K - Die Datenbank [DATABASE_K] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_J - Die Datenbank [DATABASE_J] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_L - Die Datenbank [DATABASE_L] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_M - Die Datenbank [DATABASE_M] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_O - Die Datenbank [DATABASE_O] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_P - Die Datenbank [DATABASE_P] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_Q - Die Datenbank [DATABASE_Q] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_R - Die Datenbank [DATABASE_R] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_S - Die Datenbank [DATABASE_S] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_T - Die Datenbank [DATABASE_T] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_U - Die Datenbank [DATABASE_U] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_V - Die Datenbank [DATABASE_V] hat KEINE für die Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
DATABASE_X - Die Datenbank [DATABASE_X] hat KEINE zur Seitenüberprüfung. SQL Server hat möglicherweise Schwierigkeiten, Speicherbeschädigungen zu erkennen und wiederherzustellen. Verwenden Sie stattdessen CHECKSUM.
Remote-DAC deaktiviert - Der Remotezugriff auf die Dedicated Admin-Verbindung (DAC) ist nicht aktiviert. Der DAC kann die Remote-Fehlerbehebung erheblich vereinfachen, wenn SQL Server nicht reagiert.
Priorität 50: Serverinfo :
- Sofortige Dateiinitialisierung nicht aktiviert - Aktivieren Sie IFI für schnellere Wiederherstellungen und das Wachstum von Datendateien.
Priorität 100: Leistung :
Füllfaktor geändert
DATABASE_A - Die Datenbank [DATABASE_A] enthält 417 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_B - Die Datenbank [DATABASE_B] enthält 318 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_C - Die Datenbank [DATABASE_C] enthält 346 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_D - Die Datenbank [DATABASE_D] enthält 663 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_E - Die Datenbank [DATABASE_E] enthält 335 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_F - Die Datenbank [DATABASE_F] enthält 1705 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_G - Die Datenbank [DATABASE_G] enthält 671 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_H - Die Datenbank [DATABASE_H] enthält 2364 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_I - Die Datenbank [DATABASE_I] enthält 1658 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_Z - Die Datenbank [DATABASE_Z] enthält 673 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_K - Die Datenbank [DATABASE_K] enthält 312 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_J - Die Datenbank [DATABASE_J] enthält 864 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_L - Die Datenbank [DATABASE_L] enthält 1170 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_M - Die Datenbank [DATABASE_M] enthält 382 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_O - Die Datenbank [DATABASE_O] enthält 356 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
msdb - Die [msdb] -Datenbank enthält 8 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_P - Die Datenbank [DATABASE_P] enthält 291 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_Q - Die Datenbank [DATABASE_Q] enthält 343 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_R - Die Datenbank [DATABASE_R] enthält 2048 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_S - Die Datenbank [DATABASE_S] enthält 325 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_T - Die Datenbank [DATABASE_T] enthält 322 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_U - Die Datenbank [DATABASE_U] enthält 351 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_V - Die Datenbank [DATABASE_V] enthält 312 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
DATABASE_X - Die Datenbank [DATABASE_X] enthält 352 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
tempdb - Die Datenbank [tempdb] enthält 2 Objekte mit einem Füllfaktor von 70%. Dies kann Probleme mit der Speicher- und Speicherleistung verursachen, aber auch Seitenaufteilungen verhindern.
Viele Pläne für eine Abfrage - 20763 Pläne sind für eine einzelne Abfrage im Plan-Cache vorhanden - was bedeutet, dass wir wahrscheinlich Probleme mit der Parametrisierung haben.
Server-Trigger aktiviert - Der Server-Trigger [connection_limit_trigger] ist aktiviert. Stellen Sie sicher, dass Sie verstehen, was dieser Auslöser tut - je weniger Arbeit er leistet, desto besser.
Gespeicherte Prozedur MIT RECOMPILE
master - [master]. [dbo]. [sp_AllNightLog] enthält WITH RECOMPILE im Code der gespeicherten Prozedur, was aufgrund ständiger Neukompilierungen des Codes zu einer erhöhten CPU-Auslastung führen kann.
master - [master]. [dbo]. [sp_AllNightLog_Setup] enthält WITH RECOMPILE im Code der gespeicherten Prozedur, was aufgrund ständiger Neukompilierungen des Codes zu einer erhöhten CPU-Auslastung führen kann.
Priorität 110: Leistung :
Aktive Tabellen ohne Clustered-Indizes
DATABASE_A - Die Datenbank [DATABASE_A] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_B - Die Datenbank [DATABASE_B] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_C - Die Datenbank [DATABASE_C] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_E - Die Datenbank [DATABASE_E] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_F - Die Datenbank [DATABASE_F] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_H - Die Datenbank [DATABASE_H] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_I - Die Datenbank [DATABASE_I] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_K - Die Datenbank [DATABASE_K] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_O - Die Datenbank [DATABASE_O] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_Q - Die Datenbank [DATABASE_Q] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_S - Die Datenbank [DATABASE_S] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_T - Die Datenbank [DATABASE_T] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_U - Die Datenbank [DATABASE_U] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_V - Die Datenbank [DATABASE_V] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
DATABASE_X - Die Datenbank [DATABASE_X] enthält Heaps - Tabellen ohne Clustered-Index -, die aktiv abgefragt werden.
Priorität 150: Leistung :
(Hinweis: Viele Ratschläge hier, aber ich konnte sie aufgrund der Beschränkung der Zeichen nicht einschließen. Wenn es eine andere Möglichkeit zum Teilen gibt, geben Sie dies bitte an.)