AG-VIP SQL führt manche Datenbank Operationen / Reports langsam aus. Auf dem SQL Server ist eine hohe Last zu sehen.

~ 0 min
01.03.2023 11:34

Hintergrund:

Es kommt vor, dass auf einmal AG-VIP SQL für bestimmte Abfragen, Auswertungen, Reports oder Datenbankoperationen ungewöhnlich viel Zeit benötigt. Oder auf dem SQL-Server benötigen bei manche Statistik-Updates auch eine zu lange Zeit.

Auf dem SQL-Server ist zeitgleich oft eine hohe CPU Last zu sehen.

Ursache:

Der SQL-Server benutzt intern Statistiken über die Verteilung der Daten um seine Abfragen zu optimieren.
In einer normalen Installation werden diese Statistiken automatisch durch den SQL-Server regelmäßig aktualisiert.

Wenn diese Statistiken nicht mehr mit dem realen Datenbestand übereinstimmen kann es vorkommen, dass die Abfrageoptimierung falsche Annahmen macht und ein SQL-Statement so falsch optimiert und die entsprechende Abfrage ein vielfaches der normalen Ausführungszeit benötigt.

Üblicher Weise sorgt der SQL-Server selber für entsprechende Aktualisierungen. Aber wenn viele Daten geändert wurde, oder ein Crash des Systems, ein Restore der Datenbank aufgetreten sind, kann es vorkommen, dass diese Statistiken nicht mehr passen.
Es gibt auch Einstellungen, die grundsätzlich eine automatische Aktualisierung ausschalten oder die Erfassungsrate der Analyse beschränken.
Wir raten dringend davon ab in den automatischen Mechanismus der Aktualisierung der Tabellen-Statistiken manuell zu beeinflussen.

Lösung:

Dieses Problem lässt sich mit einem Update der bestehenden Statistiken beheben. Dazu wird ein SQL Management Studio benötigt. Der Zugriff muss nicht unbedingt auf dem Server erfolgen, er kann auch von einem Client mit Zugriff auf die entsprechende Datenabnk erfolgen.
Auf der entsprechenden Datenbank wird ein Abfragefenster geöffnet und der folgende Befehl ausgeführt:

sp_updatestats;

Dieser Befehl kontrolliert alle Tabellen, aktualisiert die entsprechenden Tabellen bei denen es notwendig ist. Aktualisierungen erfolgen automatisch oder eben durch den Befehl sp_updatestats, wenn eine bestimmte Menge an Daten verändert oder hinzugefügt wurden oder die Aktualisierung länger her ist.
Im Meldungsfenster können die Ergebnisse der Aktualisierung kontrolliert werden. 

Mit dem folgenden Befehl kann ein Update der Statistik für alle Tabellen erzwungen werden.

EXEC sp_MSforeachtable 'PRINT ''?''; UPDATE STATISTICS ?;'

Es ist auch möglich diese Befehle über einen Hintergrundprozess als Job ausgeführt werden, wenn der verwendete Datenbank Nutzer über entsprechende Rechte verfügt.

Die Ausführung dieser Befehle kann je nach Größe der Datenbank ihr System entsprechenden belasten. 
Beide Befehle setzten dabei die Aktualisierungsquote auf den Systemstandard zurück. (Wie wir er es empfehlen). Sollten eigene fest definierte Quoten oder eine volle Erfassung aller Daten erfolgen soll, müssen entsprechende andere Optionen wie RESAMPLE, oder FULLSCAN verwendet werden.
Wenden Sie diese nur an, wenn Sie ein versierter SQL DB-Administrator sind.

Auf manchen Systemen mit einem hohen Datendurchsatz kann es ratsam sein, die entsprechende Aktualisierung der Statistiken regelmäßig (in einem Wartungsplan) auszuführen.

Wichtig:

Um diese Befehle zur Aktualisierung der Statistiken ausführen zu können muss das Login auf dem SQL Management Studio oder bei einem Hintergrundprozess der Login in der verwendeten Verbindungsdatei, den Zugriff auf die Datenbank als Owner oder der Login muss Mitglied der Rolle sysadmin sein. 

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Kommentieren nicht möglich