Datenbankstatistiken werden vom Datenbankmanagementsystem-Optimierer verwendet, um den optimalen Ausführungsplan für die Abfrage auszuwählen, die ausgeführt wird. 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 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, 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 ArcMap oder ArcCatalog, und stellen Sie eine Verbindung mit der Geodatabase her, die die Tabellen enthält, für die Sie die Statistiken aktualisieren möchten.
Stellen Sie eine Verbindung als Besitzer der Tabellen her.
- Öffnen Sie das Geoverarbeitungswerkzeug Datasets analysieren.
Suchen Sie das Werkzeug mithilfe des Fensters Suchen, und öffnen Sie es, oder navigieren Sie im Toolset "Geodatabase-Verwaltung" der Toolbox "Data Management" zu dem Werkzeug.
- Verwenden Sie die Datenbankverbindungsdatei, die Sie in Schritt 1 erstellt haben, als Eingabe-Workspace.
- Aktivieren Sie die Kontrollkästchen der Tabellen, die analysiert werden sollen:
- Wenn Sie die Statistiken für die ausgewählten Basistabellen aktualisieren möchten, lassen Sie das Kontrollkästchen aktiviert.
- Aktivieren Sie , um die Statistiken für die Deltatabellen der versionierten Datasets zu aktualisieren.
- Aktivieren Sie , um die Statistiken in den historischen Archivtabellen von Datasets zu aktualisieren, die für die Archivierung aktiviert sind.
- 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 das Werkzeug 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 den Benutzernamen und das Kennwort des Geodatabase-Administrators verwendet.
# 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"