Aktualisieren von Datenbankstatistiken

Mit der Standard- oder Advanced-Lizenz verfügbar.

Der Datenbankmanagementsystem-Optimierer verwendet Datenbankstatistiken, um den optimalen Plan für Abfrage auszuwählen. Um die Abfrageleistung aufrechtzuerhalten, aktualisieren Sie Statistiken, nachdem sich der Inhalt einer Tabelle oder Feature-Class 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 in einer Enterprise-Geodatabase aktualisiert werden:

  • Benutzerdefinierte Tabellen und Feature-Classes sowie die zugehörigen Indizes
  • Die Delta-Tabellen der Tabellen und Feature-Classes, die für die traditionelle Versionierung registriert sind, sowie die Indizes für die Delta-Tabellen
  • Die historischen Archivtabellen von Tabellen und Feature-Classes, die für die Geodatabase-Archivierung aktiviert sind, sowie die Indizes der Archivtabellen
  • Geodatabase-Systemtabellen
Hinweis:

Die Aktualisierung von Datenbankstatistiken ist ein Eingabe/Ausgabe (E/A)-intensiver Vorgang. Aktualisieren Sie die Statistiken in Zeiten mit möglichst geringem Datenbankverkehr.

Der Datenbankadministrator kann Datenbankwerkzeuge verwenden, um Datenbankstatistiken für benutzerdefinierte Tabellen und Feature-Classes zu aktualisieren. Beim Aktualisieren von Statistiken zu Tabellen und Feature-Classes in einer Enterprise-Geodatabase muss der Datenbankadministrator jedoch auch die Statistiken der entsprechenden internen Geodatabase-Tabellen aktualisieren. Um sicherzustellen, dass die Statistiken dieser internen Tabellen aktualisiert werden, führen Sie das Geoverarbeitungswerkzeug Datasets analysieren oder die ArcPy-Funktion AnalyzeDatasets_management aus.

Verwenden Sie auch das Geoverarbeitungswerkzeug Datasets analysieren oder die ArcPy-Funktion AnalyzeDatasets_management, um die Datenbankstatistiken für Geodatabase-Systemtabellen zu aktualisieren. Aktualisieren Sie die Statistiken in den Geodatabase-Systemtabellen, nachdem der Geodatabase viele neue Tabellen oder Feature-Classes hinzugefügt wurden, eine große Zahl versionierter Änderungen vorgenommen oder die Geodatabase komprimiert wurde.

Sie müssen das Werkzeug oder die Funktion als Besitzer der Tabellen ausführen. Bei Geodatabase-Systemtabellen ist der Besitzer der Geodatabase-Administrator.

Verwenden des Werkzeugs Datasets analysieren

Sie können das Geoverarbeitungswerkzeug Datasets analysieren zum Aktualisieren der Datenbankstatistiken verwenden. Mit diesem Werkzeug können Datenbesitzer auswählen, welche Tabellen und Feature-Classes in einem Dataset analysiert werden sollen, und der Geodatabase-Administrator kann Statistiken zu Geodatabase-Systemtabellen aktualisieren.

  1. Starten Sie ArcGIS Pro, 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 zu analysierenden Daten her.

  2. Ö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.

  3. Verwenden Sie die Datenbankverbindungsdatei, die Sie in Schritt 1 erstellt haben, als Eingabe-Workspace.
  4. Wählen Sie zur Angabe der zu analysierenden Tabellen eine oder mehrere der folgenden Optionen aus:
    • Um die Statistiken für die ausgewählten benutzerdefinierten Tabellen zu aktualisieren, lassen Sie 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 Hinzufügungen- und Löschungen-Tabellen traditionell 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. Die im vorherigen Schritt angegebene Datenbankverbindungsdatei muss eine Verbindung als Geodatabase-Administrator herstellen, damit diese Option verwendet werden kann.
  5. 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 ArcPy-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 die ArcPy-Funktion 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 = "C:\\MyProject\\MyDataConnection.sde"

# set the workspace environment
arcpy.env.workspace = workspace

# NOTE: Analyze Datasets can accept a Python list of datasets.

# Get the user name for the workspace
userName = arcpy.Describe(workspace).connectionProperties.user

# Get a list of all the datasets the user owns by using a wildcard that incldues the user name
# First, get all the stand alone tables, feature classes and rasters.
dataList = arcpy.ListTables(userName + "*") + arcpy.ListFeatureClasses(userName + "*") + arcpy.ListRasters(userName + "*")

# 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(userName + "*", "Feature"):
    arcpy.env.workspace = os.path.join(workspace,dataset)
    dataList += arcpy.ListFeatureClasses(userName + "*") + arcpy.ListDatasets(userName + "*")

# reset the workspace
arcpy.env.workspace = workspace

# Execute analyze datasets
# Note: to use the "SYSTEM" option the workspace user must be an administrator.
arcpy.management.AnalyzeDatasets(workspace, "NO_SYSTEM", dataList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE")
print("Analyze Complete")