Mettre à jour les statistiques de base de données

Disponible avec une licence Standard ou Advanced.

L'optimiseur du système de gestion de base de données utilise les statistiques de base de données pour choisir le plan d'exécution optimal adapté aux requêtes. Pour conserver les performances de requête, vous devez mettre à jour les statistiques une fois que le contenu d’une table change considérablement, par exemple, une fois que vous y chargez une grande quantité d’enregistrements ou lorsque vous effectuez de nombreuses mises à jour sur la table.

Les statistiques peuvent être mises à jour dans les types de tables et d'index suivants :

  • La table que vous avez choisie d'analyser et les index associés
  • Les tables de deltas des tables et classes d'entités versionnées, ainsi que les index des tables de deltas
  • Tables d’archive historiques des jeux de données activées pour l’archivage et les index des tables d’archive
  • Tables système de la géodatabase
Remarque :

L'actualisation de statistiques de la base de données est une opération lourde en termes d'entrées et de sorties. Il est préférable d'actualiser les statistiques lorsque le trafic au niveau de la base de données est faible.

Plusieurs méthodes dans ArcGIS vous permettent de mettre à jour les statistiques. Ils sont décrits dans les sections ci-après :

Utiliser l'outil Analyser des jeux de données

Vous pouvez utiliser l'outil de géotraitement Analyser des jeux de données (disponible dans le jeu d'outils Administration de géodatabase de la boîte à outils Gestion des données) pour mettre à jour les statistiques. Cet outil vous permet de choisir les tables à analyser dans un jeu de données et permet à l'administrateur de géodatabase de mettre à jour les statistiques sur des tables système de géodatabase.

Vous devez exécuter l'outil comme propriétaire des tables que vous voulez analyser. Dans le cas des tables système de géodatabase, vous devez exécuter l'outil en tant qu'administrateur de géodatabase. Vous devez mettre à jour les statistiques sur les tables système de la géodatabase une fois que de nombreuses nouvelles tables ou classes d’entités ont été ajoutées à la géodatabase, qu’un grand nombre de modifications versionnées ont été effectuées ou que la géodatabase a été compressée.

  1. Lancez ArcGIS Pro et connectez-vous à la géodatabase qui contient les tables pour lesquelles vous souhaitez mettre à jour les statistiques.

    Connectez-vous en tant de propriétaire des tables à analyser.

  2. Ouvrez l'outil de géotraitement Analyze Datasets.

    Vous pouvez saisir le nom d’outil dans le champ Search (Rechercher) pour trouver l’outil et l’ouvrir ou accéder à l’outil dans le jeu d’outils Administration de la géodatabase de la boîte d’outils Gestion des données.

  3. Utilisez le fichier de connexion de base de données que vous avez créé à l'étape 1 comme espace de travail en entrée.
  4. Sélectionnez les tables à analyser :
    • Si vous souhaitez mettre à jour les statistiques pour les tables de base sélectionnées, la case Analyser les tables de base pour les jeux de données sélectionnés doit rester cochée.
    • Cochez la case Analyser les tables de deltas pour les jeux de données sélectionnés pour mettre à jour les statistiques dans les tables d'ajouts et de suppressions des jeux de données versionnés.
    • Cochez la case Analyser les tables d'archive pour les jeux de données sélectionnés pour mettre à jour les statistiques dans les tables d'archive d'historique des jeux de données archivables.
    • Cochez Inclure les tables système pour mettre à jour les statistiques sur les tables système de géodatabase. Cette opération ne peut être exécutée que si vous êtes connecté à la géodatabase en tant qu'administrateur de géodatabase.
  5. Cliquez sur Run (Exécuter).

Les statistiques sont actualisées pour les tables que vous avez sélectionnées et leurs index.

Exécuter un script Python

Vous pouvez appeler la fonction AnalyzeDatasets_management dans un script Python pour mettre à jour les statistiques sur les tables de base, les tables delta, les tables d’archive ou les tables de système de la géodatabase. Tout comme avec l'outil Analyser des jeux de données, vous devez exécuter AnalyzeDatasets_management en tant que propriétaire des tables que vous analysez.

Lorsque vous exécutez le script Python, précisez un fichier de connexion à la base de données (fichier .sde) lorsque vous l’exécutez. Le script met à jour les statistiques pour toutes les tables appartenant à l'utilisateur spécifié dans la connexion.

Par exemple, pour exécuter ce script sous Linux à l'aide du fichier de connexion à la base de données entgdb.sde situé dans /usr/connections, saisissez ce qui suit :

./ AnalyzeDatasets.py /usr/connections/entgdb.sde

Pour exécuter ce script et mettre à jour les statistiques dans les tables système, spécifiez un fichier de connexion qui se connecte en tant qu'administrateur de géodatabase.

# 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")