Der Datenbankmanagementsystem-Optimierer verwendet Datenbankstatistiken, um den optimalen Ausführungsplan für Abfrage auszuwählen. Um die Abfrageleistung aufrechtzuerhalten, müssen Sie Statistiken aktualisieren, nachdem sich der Inhalt einer Tabelle deutlich geändert hat, beispielsweise nachdem Sie eine große Anzahl von Datensätzen in die Tabelle geladen oder viele Änderungen an ihr vorgenommen haben.
Statistiken können für die folgenden Tabellen- und Indextypen aktualisiert werden:
- die zum Analysieren ausgewählte Tabelle und die zugehörigen Indizes
- die Deltatabellen versionierter Tabellen und Feature-Classes und die Indizes der Deltatabellen
- die historischen Archivtabellen von Datasets, die für die Archivierung aktiviert sind, und die Indizes der Archivtabellen
- Geodatabase-Systemtabellen
- Wenn Sie eine Feature-Class analysieren, die den sdebinary-Geometriespeicher verwendet, werden auch die Statistiken für die Feature-Tabelle, die räumliche Indextabelle und die Indizes dieser Tabellen aktualisiert.
Es gibt mehrere Methoden in ArcGIS, die Sie zum Aktualisieren von Statistiken verwenden können. Diese werden in den folgenden Abschnitten beschrieben:
Verwenden des Befehls "Analysieren"
Mit dem Befehl Analysieren in ArcMap können Sie Statistiken zu bestimmten Datasets aktualisieren, die Sie direkt im Kataloginhaltsverzeichnis auswählen. Sie müssen der Besitzer des Datasets sein, um Statistiken aktualisieren zu können.
- Starten Sie ArcMap oder ArcCatalog.
-
Stellen Sie im Kataloginhaltsverzeichnis unter Datenbankverbindungen eine Verbindung zu der Datenbank oder Enterprise-Geodatabase her, die das Dataset enthält, für das Sie die Statistiken aktualisieren möchten.
Stellen Sie sicher, dass Sie eine Verbindung als Besitzer des Datasets herstellen.
- Klicken Sie im Kataloginhaltsverzeichnis mit der rechten Maustaste auf das Dataset.
Dies kann ein Feature-Dataset, eine Feature-Class, Tabelle, ein Raster-Katalog, Raster-Dataset oder Mosaik-Dataset sein.
- Zeigen Sie auf Verwalten, und klicken Sie auf Analysieren.
Die Statistiken werden für Tabellen und Indizes dieses Datasets aktualisiert, wie am Anfang dieses Themas beschrieben.
Verwenden des Werkzeugs Datasets analysieren
Sie können das Geoverarbeitungswerkzeug Datasets analysieren (das sich im Toolset der Toolbox "Geodatabase-Verwaltung" der Toolbox "Data Management" befindet) verwenden, um Statistiken zu aktualisieren. Verwenden Sie dieses Werkzeug anstelle des Befehls Analysieren in ArcMap, wenn Sie Statistiken für mehrere Datasets gleichzeitig aktualisieren möchten, wenn Sie spezifische Tabellen für die Analyse auswählen möchten (falls Sie beispielsweise nur die Statistiken in den Deltatabellen aktualisieren möchten) oder wenn Sie Statistiken in den Geodatabase-Systemtabellen aktualisieren möchten.
Sie müssen das Werkzeug als Besitzer der Tabellen ausführen, die Sie analysieren möchten. Bei Geodatabase-Systemtabellen müssen Sie das Werkzeug als Geodatabase-Administrator ausführen. Sie sollten die Statistiken in den Geodatabase-Systemtabellen aktualisieren, nachdem der Geodatabase viele neue Tabellen oder Feature-Classes hinzugefügt wurden, eine große Zahl versionierter Bearbeitungen durchgeführt oder die Geodatabase komprimiert wurde.
- Starten Sie einen ArcGIS for Desktop-Client, und stellen Sie eine Verbindung mit der Geodatabase her, die die Tabellen enthält, deren Statistiken aktualisiert werden sollen.
Stellen Sie eine Verbindung als Besitzer der Tabellen her.
- Öffnen Sie das Geoverarbeitungswerkzeug Datasets analysieren.
Sie können den Namen des Werkzeugs in das Feld Suchen eines ArcGIS for Desktop-Clients eingeben, um es zu suchen und zu öffnen, oder Sie können im Toolset "Geodatabase-Verwaltung" in der Toolbox "Data Management" zu dem Werkzeug navigieren.
- Verwenden Sie die Datenbankverbindungsdatei, die Sie in Schritt 1 erstellt haben, als Eingabe-Workspace.
- Aktivieren Sie die Kontrollkästchen der Tabellen, die Sie analysieren möchten:
- Wenn Statistiken für die ausgewählten Basistabellen aktualisiert werden sollen, lassen Sie das Kontrollkästchen der Option Basistabellen für ausgewählte Datasets analysieren aktiviert.
- Aktivieren Sie das Kontrollkästchen Delta-Tabellen für ausgewählte Datasets analysieren, um Statistiken für die Adds- und Deletes-Tabellen versionierter Datasets zu aktualisieren.
- Aktivieren Sie das Kontrollkästchen Archivtabellen für ausgewählte Datasets analysieren, um Statistiken für die historischen Archivtabellen von Datasets für die Archivierung zu aktualisieren.
- Aktivieren Sie Systemtabellen einbeziehen, um die Statistiken in Geodatabase-Systemtabellen zu aktualisieren.
- Klicken Sie auf OK, um das Werkzeug auszuführen.
Statistiken werden für die ausgewählten Tabellen und deren Indizes aktualisiert.
Ausführen eines Python-Skripts
Sie können die Funktion AnalyzeDatasets_management in einem Python-Skript aufrufen, um die Statistiken für Basistabellen, Deltatabellen, Archivtabellen und/oder Geodatabase-Systemtabellen zu aktualisieren. Sie müssen AnalyzeDatasets_management ebenso wie das Werkzeug Datasets analysieren als Besitzer der Tabellen ausführen, die Sie analysieren.
Wenn Sie das folgende Python-Skript ausführen, geben Sie eine Datenbankverbindungsdatei (.sde-Datei) an, wenn Sie sie ausführen. Das Skript aktualisiert Statistiken für alle Tabellen, die der in der Verbindung angegebene Benutzer besitzt.
Um dieses Skript mit der Datenbankverbindungsdatei entgdb.sde, die sich im Verzeichnis /usr/connections befindet, unter Linux auszuführen, geben Sie Folgendes ein:
./ AnalyzeDatasets.py /usr/connections/entgdb.sde
Um dieses Skript zum Aktualisieren von Statistiken für Systemtabellen auszuführen, geben Sie eine Verbindungsdatei an, die eine Verbindung als Geodatabase-Administrator herstellt.
# Name: AnalyzeDatasets.py
# Description: analyzes all datasets in an enterprise geodatabase
# for a given user.
# Import system modules
import arcpy, os
# set workspace
# the user in this workspace must be the owner of the data to analyze.
workspace = arcpy.GetParameterAsText(0)
# set the workspace environment
arcpy.env.workspace = workspace
# NOTE: Analyze Datasets can accept a Python list of datasets.
# Get a list of all the datasets the user has access to.
# First, get all the stand alone tables, feature classes and rasters.
dataList = arcpy.ListTables() + arcpy.ListFeatureClasses() + arcpy.ListRasters()
# Next, for feature datasets get all of the datasets and featureclasses
# from the list and add them to the master list.
for dataset in arcpy.ListDatasets("", "Feature"):
arcpy.env.workspace = os.path.join(workspace,dataset)
dataList += arcpy.ListFeatureClasses() + arcpy.ListDatasets()
# reset the workspace
arcpy.env.workspace = workspace
# Get the user name for the workspace
userName = arcpy.Describe(workspace).connectionProperties.user.lower()
# remove any datasets that are not owned by the connected user.
userDataList = [ds for ds in dataList if ds.lower().find(".%s." % userName) > -1]
# Execute analyze datasets
# Note: to use the "SYSTEM" option the workspace user must be an administrator.
arcpy.AnalyzeDatasets_management(workspace, "NO_SYSTEM", userDataList, "ANALYZE_BASE","ANALYZE_DELTA","ANALYZE_ARCHIVE")
print "Analyze Complete"