Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Informationen zu Datenbankstatistiken
Statistiken für die Abfrageoptimierung sind Objekte, die statistische Informationen zur Verteilung von Werten in einer oder mehreren Spalten einer Tabelle oder indizierten Sicht enthalten. Der Abfrageoptimierer verwendet diese Statistiken, um die Kardinalität oder Die Anzahl der Zeilen im Abfrageergebnis zu schätzen. Diese Kardinalitätsschätzungen ermöglichen es dem Abfrageoptimierer, einen qualitativ hochwertigen Abfrageplan zu erstellen.
Beispielsweise kann der Abfrageoptimierer die Abfrageleistung verbessern, indem Kardinalitätsschätzungen verwendet werden, um den Indexsucheoperator anstelle des ressourcenintensiveren Indexscanoperators auszuwählen. Andernfalls können veraltete Statistiken die Abfrageleistung beeinträchtigen, indem ineffiziente Abfragepläne verwendet werden.
Große SharePoint-Unternehmensbereitstellungen müssen über Datenbankwartungspläne verfügen, um Datenbankstatistiken für Inhaltsdatenbanken zu aktualisieren, die sich in Microsoft SQL Server befinden. Kunden sollten sich nicht nur auf SharePoint-basierte Datenbankwartungsaufträge verlassen, um diese Aufgaben auszuführen. Weitere Informationen finden Sie unter Bewährte Methoden für SQL Server in einer SharePoint Server-Farm.
Symptome
Wenn Datenbankstatistiken veraltet sind, treten bei SharePoint Server-Installationen möglicherweise eines oder mehrere der folgenden Symptome auf:
Langsame Ladezeiten und verringerte Leistung, die beim Öffnen einer Websiteseite zu einem HTTP 500-Fehler führen kann
Langsamere Leistung, die Fehlermeldungen wie das folgende Beispiel generiert:
Service unavailable Unknown SQL Exception 53 Server Error in '/' Application Runtime Error
Das Ausführen von Suchdurchforstungen führt zu unerwarteter SQL Server Leistung, Datenbanksperrung und Blockierung
Zeitgeberaufträge mit langer Ausführungsdauer, z. B. die Aufträge "Microsoft SharePoint Foundation Usage Data Processing", deren Abschluss während jeder Iteration schrittweise länger dauert.
Die Unfähigkeit, eine SharePoint-Website zu öffnen, und eine Fehlermeldung, die der folgenden ähnelt:
Unexpected System.Web.HttpException: Request timed out
Timeouts beim Rendern von Websites beim Laden der Navigation und die folgende Fehlermeldung:
PortalSiteMapProvider was unable to fetch children for node
Hohe CPU-Auslastung auf dem Server, auf dem SQL Server ausgeführt wird, wenn SharePoint-Abfragen verarbeitet werden
Ursache
Diese Probleme können durch veraltete Datenbankstatistiken verursacht werden. SharePoint führt täglich einen Zeitgeberauftrag aus, um Datenbankstatistiken mithilfe der proc_updatestatistics SQL-Prozedur zu aktualisieren. Aus verschiedenen Gründen wird dieser Zeitgeberauftrag jedoch möglicherweise nicht abgeschlossen oder nicht alle Tabellen konsistent aktualisiert. Wenn beispielsweise eine Sicherung für die Inhaltsdatenbank aus SQL Server gleichzeitig mit dem SharePoint-Zeitgeberauftrag ausgeführt wird, wird der Auftrag nicht fortgesetzt.
Wenn der SharePoint-Zeitgeberauftrag, der statistiken aktualisiert, abgeschlossen ist, können die folgenden Ereignisse in die ULS-Protokolle geschrieben werden:
- e9bf "Fehler beim Aktualisieren von Statistiken in der Datenbank, {0}"
- cm1y "Aktualisieren von Statistiken in der Datenbank, {0}"
- dbl2 "Überspringen der Statistikaktualisierung der Datenbank{0}, da ihr status ist {1}"
- cm1x "Aktualisieren von Statistiken in allen Datenbanken auf {0}"
Wenn diese Bedingungen nicht genau überwacht werden und keine Korrekturmaßnahmen ergriffen werden, werden Datenbankstatistiken veraltet, und SharePoint-Leistungsprobleme treten schließlich auf.
Lösung
Um diese Symptome und potenzielle Dienstausfälle zu verhindern, sollten SQL Server Wartungspläne implementiert werden, um die Statistiken der SharePoint-Inhaltsdatenbank mithilfe der OPTION FULLSCAN auf dem neuesten Stand zu halten. Weitere Informationen finden Sie unter Indexstatistiken.
Bei der Implementierung des SQL Server Wartungsplans zum Aktualisieren der Statistiken für Ihre SharePoint-Datenbanken ist es nicht erforderlich, den Auftrag aus SharePoint zu deaktivieren. Da diese Wartungstasks jedoch von beiden Standorten aus ähnliche Funktionen ausführen, ist es zulässig, die Heath Analyzer-Regel "Von SharePoint verwendete Datenbanken haben veraltete Indexstatistiken" aus der SharePoint-Farm zu deaktivieren, wenn Datenbanken von SQL verwaltet werden. Weitere Informationen zum Verwalten des Indexaktualisierungsauftrags über SharePoint Server finden Sie unter Von SharePoint verwendete Datenbanken haben veraltete Indexstatistiken (SharePoint 2013).
Weitere Informationen
Die tägliche Aktualisierung der Statistiken von SharePoint-Inhaltsdatenbanken mithilfe der FULLSCAN-Option aus dem SQL Server ist eine empfohlene bewährte Methode. Weitere Informationen finden Sie unter Bewährte Methoden für SQL Server in einer SharePoint Server-Farm und Datenbankwartung für SharePoint Foundation 2010.
Wenn in Ihrer SharePoint-Farm jedoch derzeit Leistungsprobleme aufgrund veralteter STATS auftreten, können die folgenden Informationen als einmaliger Lösungsschritt verwendet werden, um dieses Problem zu beheben.
Führen Sie die folgende Abfrage aus, um Datenbankstatistikinformationen aus einer bestimmten Datenbank anzuzeigen:
-- Checking the DB Stats
select a.id as 'ObjectID', isnull(a.name,'Heap') as 'IndexName', b.name as 'TableName',
stats_date (id,indid) as stats_last_updated_time
from sys.sysindexes as a
inner join sys.objects as b
on a.id = b.object_id
where b.type = 'U'
Weitere Informationen zur Datenbankstatistiküberprüfung finden Sie unter DBCC SHOW_STATISTICS.
Führen Sie die folgende Abfrage aus, um Datenbankstatistiken für eine Einzeldatenbank zu aktualisieren, die die FULLSCAN-Option verwendet:
-- Update DB Stats
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Wichtiger Hinweis Die Option "sp_MSforeachtable" ist eine nicht dokumentierte Prozedur, die "unverändert" bereitgestellt wird und nur verwendet werden sollte, um das unmittelbare Problem zu beheben. Es wird nicht empfohlen, dieses Verfahren als Teil eines regulären Wartungsplans zu verwenden. Informationen zum Implementieren eines Plans für UPDATE STATISTICS mithilfe der OPTION FULLSCAN finden Sie in der Dokumentation zu UPDATE STATISTICS (Transact-SQL).
Je nachdem, wie veraltet die Datenbankstatistiken geworden sind, müssen Sie den Abfrageplancache möglicherweise löschen, indem Sie den Befehl DBCC FREEPROCCACHE ausführen, nachdem Sie die Datenbankstatistiken aktualisiert haben. Die Syntax und die Argumente für diese Prozedur finden Sie in DBCC FREEPROCCACHE (Transact-SQL). Dadurch wird sichergestellt, dass neue Abfragen den optimalen Ausführungsplan verwenden, nachdem die Datenbankstatistiken aktualisiert wurden. Sehen Sie sich beispielsweise die folgende Abfrage an:
-- Remove all elements from the plan cache
DBCC FREEPROCCACHE
Wichtig
Durch Ausführen des Befehls DBCC FREEPROCCACHE wird der Cache für alle Abfragepläne in der SQL-instance gelöscht. Dieser Befehl sollte gut verstanden werden, bevor Sie ihn während der Produktionsstunden ausführen.
Wenn der BEFEHL DBCC FREEPROCCACHE nach dem Aktualisieren der veralteten Datenbankstatistiken nicht ausgeführt wurde, befinden sich Abfragen mit ineffizienten Ausführungsplänen möglicherweise weiterhin im Cache und werden verwendet. Wenn dies der Fall ist, erzwingen Sie eine Neukompilierung für die angegebene gespeicherte Prozedur mithilfe der gespeicherten Prozedur (siehe sp_recompile (Transact-SQL)). Sehen Sie sich beispielsweise die folgende Abfrage an:
USE SP2013_Content_DB
GO
sp_recompile proc_getwebnavstruct
Das Ausführen des sp_recompile Befehls zusammen mit Prozedur-, Funktions- oder Tabellenparametern zielt auf ein einzelnes Element im Cache zum Entfernen ab, ohne dass sich dies auf die instance auswirkt.
Benötigen Sie weitere Hilfe? Navigieren Sie zu SharePoint-Community.