Begrenzung der SQL Server Last bei Statistikupdates

~ 0 min
23.03.2016 16:33

Wir beobachten bei bestimmten SQL Statements in den Statistikupdates eine extrem hohe Serverlast. Speziell wird diese erzeugt wenn Datensatzbenutzerrechte verwendet werden und eine hohe Anzahl von Benutzern und Datensätze vorhanden ist.

In diesem Statement wird für jedes Paar Adresse-Benutzer ein Eintrag erzeugt. Nur mit dieser Tabelle ist es möglich die exakten Zahlen anzuzeigen, wie viele Tickets je Agent und Stufe zur Bearbeitung zur Verfügung stehen.

Zwei Statements erzeugen dabei eine sehr hohe Prozessorlast. Da es sich um einen Hintergrundprozess handelt, ist eine "schnelle" Ausführung eigentlich nicht zwingend. Vor allem solten andere Prozesse nicht darunter leiden. Zu beobachten ist jedoch, dass die Prozessorlast des SQL Servers hier auf 100% ansteigt.

Lösung:

In der Verbindungsdatei (AGDB Datei) wurde ein neuer Abschnitt eingebaut mit einem neuen Eintrag:

[BackgroundWorkerOptions]
MaxDOP=50


MaxDOP gibt dabei den "Maximum Degree of Parallelism" an. Damit kann ein Prozentwert angegeben werden, der angibt wieviel Prozent der zur Verfügung stehenden Prozessoren für die entsprechenden SQL Statements zur Verfügung stehen sollen. 50 gibt also an, dass die hälfte der Prozessoeren verwendet werden dürfen. Es wird kaufmänisch gerundet.  Jeder Wert zwischen 1 und 100 kann verwendet werden. Liegen die Werte außerhalb werden alle Prozessoren verwendet.
Gleiches gilt wenn kein Eintrag vorhanden ist.

Die Verwendung einer Begrenzung führt zwar dazu, dass die Erzeugung der Statistik etwas länger dauert, behindert dafür aber andere SQL-Queries weniger.
Dieses Statement hat nur Auswirkungen auf ausgewählte SQL Statements in den Hintergrundprozessen, die statistische Daten erzeugen. Allgemein werden Abfragen und Suchen nicht durch diesen Parameter beeinflusst.

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Kommentieren nicht möglich