Mit der Standard- oder Advanced-Lizenz verfügbar.
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
Hinweis:
Die Aktualisierung von Datenbankstatistiken ist ein Eingabe/Ausgabe (E/A)-intensiver Vorgang. Sie sollten die Statistiken für Zeiten mit möglichst geringem Datenbankverkehr aktualisieren.
Es gibt mehrere Methoden in ArcGIS, die Sie zum Aktualisieren von Statistiken verwenden können. Diese werden in den folgenden Abschnitten 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. Mit diesem Werkzeug können Sie festlegen, welche Tabellen in einem Dataset analysiert werden sollen, und der Geodatabase-Administrator kann es zum Aktualisieren von Statistiken für Geodatabase-Systemtabellen verwenden.
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 Änderungen vorgenommen oder die Geodatabase komprimiert wurde.
- Starten Sie ArcGIS Pro, und stellen Sie eine Verbindung mit der Geodatabase her, die die Tabellen enthält, für die Sie Statistiken aktualisieren möchten.
Stellen Sie eine Verbindung als Besitzer der zu analysierenden Daten her.
- Öffnen Sie das Geoverarbeitungswerkzeug Datasets analysieren.
Sie können den Namen des Werkzeugs in das Feld Suchen 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. Beachten Sie, dass die Ausführung dieses Werkzeug nur bei bestehender Verbindung mit der Geodatabase als Geodatabase-Administrator möglich ist.
- Klicken Sie auf Ausfü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, Delta-Tabellen, Archivtabellen 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 bei der Ausführung eine Datenbankverbindungsdatei (.sde-Datei) an. 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
import 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", dataList, "ANALYZE_BASE","ANALYZE_DELTA","ANALYZE_ARCHIVE")
print("Analyze Complete")