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 optimal adapté aux requêtes. Pour conserver les performances de requête, mettez à jour les statistiques une fois que le contenu d’une table ou d’une classe d’entités a été considérablement modifié (par exemple, une fois que vous y avez chargé une grande quantité d’enregistrements ou que vous avez effectué de nombreuses mises à jour sur la table).

Les statistiques peuvent être mises à jour dans les types de tables et d’index suivants d’une géodatabase d’entreprise :

  • Tables définies par l’utilisateur et classes d’entités, avec index associés
  • Tables de deltas des tables et classes d’entités inscrites pour un versionnement traditionnel, ainsi que les index des tables de deltas
  • Tables d’archive historiques des tables et classes d’entités activées pour l’archivage des géodatabases 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. Actualisez les statistiques lorsque le trafic de la base de données est le plus faible.

L’administrateur de base de données peut utiliser les outils de base de données pour mettre à jour les statistiques de base de données des classes d’entités et tables créées par l’utilisateur. Toutefois, lorsqu’il met à jour les statistiques sur les tables et classes d’entités dans une géodatabase d’entreprise, l’administrateur de base de données doit également mettre à jour les statistiques sur les tables internes appropriées de la géodatabase qui y sont associées. Pour pous assurer que les statistiques sur ces tables internes sont mises à jour, exécutez l’outil de géotraitement Analyze Datasets (Analyser les jeux de données) ou la fonction AnalyzeDatasets_management ArcPy.

Utilisez également l’outil de géotraitement Analyze Datasets (Analyser les jeux de données) ou la fonction AnalyzeDatasets_management ArcPy pour mettre à jour les statistiques de base de données des tables système de la géodatabase. Mettez à 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 mises à jour versionnées ont été effectuées ou que la géodatabase a été compressée.

Vous devez exécuter l’outil ou la fonction comme propriétaire des tables. Dans le cas des tables système de géodatabase, le propriétaire correspond à l’administrateur de géodatabase.

Utiliser l'outil Analyser des jeux de données

Vous pouvez utiliser l’outil de géotraitement Analyze Datasets (Analyser les jeux de données) pour mettre à jour les statistiques de base de données. Cet outil permet aux propriétaires de données de sélectionner les tables et classes d’entités d’un jeu de données à analyser et permet à l’administrateur de géodatabase de mettre à jour les statistiques sur les tables système de géodatabase.

  1. Démarrez ArcGIS Pro et connectez-vous à la géodatabase qui contient les tables dont vous souhaitez modifier 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 de l’outil dans le champ Search (Rechercher) pour rechercher l’outil et l’ouvrir ou accéder à l’outil dans le jeu d’outils Geodatabase Administration (Administration de la géodatabase) de la boîte d’outils Data Management (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 une ou plusieurs des options ci-dessous pour spécifier les tables à analyser :
    • Pour mettre à jour les statistiques des tables définies par l’utilisateur sélectionnées, laissez la case Analyze Base Tables for Selected Dataset(s) (Analyser les tables de base pour les jeux de données sélectionnés) cochée.
    • Cochez la case Analyze Delta Tables for Selected Dataset(s) (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 traditionnels.
    • 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. Le fichier de connexion à la base de données spécifié à l’étape précédente doit se connecter en tant qu’administrateur de géodatabase pour utiliser cette option.
  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 ArcPy dans un script Python pour mettre à jour les statistiques sur les tables de base, les tables de deltas, les tables d’archive ou les tables système de la géodatabase. Tout comme avec l’outil Analyze Datasets (Analyser les jeux de données), vous devez exécuter la fonction AnalyzeDatasets_management ArcPy en tant que propriétaire des tables que vous analysez.

Lorsque vous exécutez le script Python ci-après, spécifiez un fichier de connexion à la base de données (fichier .sde). 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, entrez :

./ 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 = "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")