Extrem langsames StatMan-Abfrageproblem mit der # SP2010-Farm

7

Das Problem, auf das ich stoße, wird in einem Blog-Beitrag erläutert, den ich dafür erstellt habe (leicht zu finden und die Antworten / Lösungen an einem Ort zu verwalten). Dieser finden Sie hier: http://schoennie.blogspot.com/ 2013/09 / slow-statman-query-issue-with-sp2010.html

Eine kurze Zusammenfassung ist, dass diese Einzelserverinstallation von SharePoint 2010 auf SQL 2008R2 (derselbe Server) bei jedem ersten Upload in einem bestimmten Intervall (anscheinend jeden Morgen) eine SEHR langsame Reaktion erfährt. Die Analyse der SQL-Aktivitäten ergab, dass diese Abfrage beim Starten eines Uploads vor dem "Einfügen eines Teils" des Uploads ausgeführt wird:

SELECT StatMan([SC0], [LC0])
FROM   (SELECT TOP 100 PERCENT CONVERT(VARBINARY, 
                                        SUBSTRING ([Content], 1, 100) + 
                                        +SUBSTRING([Content], CASE
                                                                WHEN LEN([Content]) <= 200 THEN 101
                                                                ELSE LEN([Content]) - 99
                                                            END, 100)) AS [SC0],
                                        DATALENGTH([Content])   AS [LC0]
        FROM   [dbo].[AllDocStreams] WITH (READUNCOMMITTED)
        ORDER  BY [SC0]) AS _MS_UPDSTATS_TBL 

Ich habe jetzt ein paar Tage damit verbracht, mehr Informationen zu dieser StatMan-Abfrage zu erhalten und zu erfahren, warum dadurch die Festplatten-E / A durch das Dach gehen und die Länge der Festplattenwarteschlange über den Wert 5 (normalerweise um 0,01) wächst.

Bitte teilen Sie Ihre Gedanken dazu mit oder weisen Sie mich in eine bestimmte Richtung / Ressource. Ich bin seit ungefähr 8 Jahren als SharePoint Consultant & DBA in diesem Softwarebereich tätig, habe aber so etwas noch nicht gesehen!

Vielen Dank im Voraus, Jeroen

Jeroen Schoenmakers
quelle
Dies sieht aus wie ein automatisches Statistik-Update und scannt den Inhalt aller Dokumente, die Sie in SharePoint haben. Kein Wunder, dass das teuer ist! Eine schnelle Lösung wäre, asynchrone Statistikaktualisierungen zu aktivieren, die den Einfügevorgang entsperren, und die Statistikaktualisierung im Hintergrund durchzuführen. Wenn wir uns unsere eigene SharePoint-Datenbank ansehen (ich bin kein Experte), sehe ich keine Statistiken in dieser Spalte, aber wir verwenden die Dokumente nicht ausgiebig (<2.000 Zeilen in unserer Tabelle). Bearbeiten: Wir verwenden SP 2007.
Jon Seigel
Danke für deine Gedanken Jon! Das Problem mit den Statistiken in SharePoint (2010) ist, dass es einen Zeitgeberjob gibt, der für die Erstellung der Statistiken verantwortlich ist. Dieser Timer-Job wird von SharePoint ausgeführt und daher ist die automatische Erstellung von SQL-Statistiken standardmäßig deaktiviert. Microsoft empfiehlt, diese Einstellung nicht zu ändern. Es gibt jedoch ein Problem mit diesem Setup, wenn ein anderer Prozess ausgeführt wird (z. B. eine Sicherung), der Timer-Job nicht ausgeführt wird und keine neuen Statistiken vorliegen. In meinem Fall habe ich die Erstellungsstatistik manuell ausgeführt und das Problem ist immer noch vorhanden. Ich werde mich jedoch mit der Asynchronisierung befassen! Vielen Dank!
Jeroen Schoenmakers
Beim Überprüfen der Einstellungen und beim Einlesen in asynchrone Statistikaktualisierungen sehe ich, dass die Einstellungen der Inhaltsdatenbank in auto_create_statistics = True geändert werden. Dies ist eine nicht empfohlene Einstellung und kann das gesamte Problem verursachen. Ich habe es wieder geändert und werde überwachen, ob das Statman-Abfrageproblem behoben ist (das früher mehr als 18 Minuten dauerte!)
Jeroen Schoenmakers
Ich habe keine SP 2010-Datenbank zum Anschauen, aber ich frage mich wirklich, warum Statistiken für diese Spalte überhaupt benötigt werden, da es sich um eine Blob-Spalte handelt. Ich nehme an, es würde mich nicht überraschen, wenn SharePoint etwas Verrücktes tut, wie diese Spalte mit etwas innerhalb eines Entfernungsscans zu vergleichen. Pfui.
Jon Seigel
Hallo Jon, nochmals vielen Dank für deine Gedanken. Ich habe es heute Morgen erneut versucht und es scheint behoben zu sein, da ich die Konfiguration der automatischen Statistiken in der Inhaltsdatenbank deaktiviert habe. Es gibt nicht nur BLOBS in der all_docs-Tabelle, es gibt auch eine Reihe von Metadaten usw. Ich hoffe wirklich, dass es jetzt behoben ist und für den Rest der Woche genau überwacht wird! Haben Sie eine gute, Jeroen
Jeroen Schoenmakers

Antworten:

5

Dies ist SQL Server, der die Statistiken für eine Tabelle aktualisiert. Es kann automatisch ausgelöst werden, wenn sich etwa 20% der Daten in Ihrer Tabelle ändern, oder bei Bedarf, wenn Sie Jobs ausführen, die Statistiken aktualisieren.

Sie haben einige Möglichkeiten, um die Schmerzen zu lindern.

Sie können asynchrone Statistikaktualisierungen aktivieren , mit denen SQL Server Statistiken hinter den Kulissen aktualisieren kann , ohne andere Abfragen zu blockieren. Es wird jedoch immer noch Auswirkungen auf die Leistung haben, wie Kendra Little in The Secret IO Explosion erklärt .

Sie können Statistiken während Wartungsfenstern proaktiv manuell aktualisieren. Dies verhindert nicht die Wahrscheinlichkeit, dass sich 20% Ihrer Daten ändern, sondern verringert lediglich die Wahrscheinlichkeit.

Sie können die automatische Aktualisierung von Statistiken insgesamt deaktivieren. Dies ist im Allgemeinen eine ziemlich schlechte Idee, da Ihre Ausführungspläne möglicherweise völlig falsch sind und die Leute auch nicht daran gehindert werden, die Statistiken manuell zu aktualisieren.

Brent Ozar
quelle