Les statistiques de base de données sont utilisées par l'optimiseur du système de gestion de base de données pour choisir le plan d'exécution optimal adapté à la requête qui est exécutée. Pour conserver les performances des requêtes, vous devez mettre à jour les statistiques après une modification importante du contenu d'une table, par exemple, lorsque vous avez chargé beaucoup d'enregistrements ou apporté de nombreuses modifications dans 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
- Les tables d'archive d'historique des jeux de données qui sont activées pour l'archivage et les index des tables d'archive
- Tables système de la géodatabase
- La table d'entités, la table d'index spatiaux et les index de ces tables si vous analysez une classe d'entités utilisant le stockage de géométrie sdebinary
Plusieurs méthodes dans ArcGIS vous permettent de mettre à jour les statistiques. Ils sont décrits dans les sections ci-après :
Utiliser la commande Analyser
La commande Analyser permet de mettre à jour les statistiques sur des jeux de données spécifiques que vous sélectionnez directement dans l'arborescence du Catalogue. Vous devez être le propriétaire du jeu de données pour mettre à jour les statistiques.
- Démarrez ArcMap ou ArcCatalog.
-
Dans l'arborescence du Catalogue, sous Connexions aux bases de données, connectez-vous à la base de données ou à la géodatabase d'entreprise contenant le jeu de données dont vous souhaitez mettre à jour les statistiques.
Veillez à vous connecter en tant que propriétaire du jeu de données.
- Cliquez avec le bouton droit sur le jeu de données dans l'arborescence du Catalogue.
Il peut s'agir d'un jeu de données d'entité, d'une classe d'entités, d'une table, d'un catalogue d'images, d'un jeu de données raster ou d'une mosaïque.
- Pointez sur Organiser et cliquez sur Analyse.
Les statistiques sont mises à jour pour les tables et les index de ce jeu données, comme indiqué au début de cette rubrique.
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. Préférez cet outil à la commande Analyser pour mettre à jour les statistiques sur plusieurs jeux de données à la fois ou sur les tables système de géodatabase, ou pour choisir les tables à analyser (si par exemple vous voulez uniquement mettre à jour les statistiques sur les tables de deltas).
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 après avoir ajouté plusieurs nouvelles tables ou classes d'entités dans la géodatabase, effectué de nombreuses mises à jour versionnées ou compressé la géodatabase.
- Démarrez ArcMap ou ArcCatalog et connectez-vous à la géodatabase qui contient les tables dont vous souhaitez modifier les statistiques.
Connectez-vous en tant que propriétaire des tables.
- Ouvrez l'outil de géotraitement Analyze Datasets.
Utilisez la fenêtre Rechercher pour trouver l'outil et l'ouvrir, ou accédez à l'outil dans le jeu d'outils Administration de géodatabase de la boîte à outils Gestion des données.
- Utilisez le fichier de connexion de base de données que vous avez créé à l'étape 1 comme espace de travail en entrée.
- Sélectionnez les tables à analyser :
- Si vous voulez mettre à jour les statistiques pour les tables de base sélectionnées, ne les décochez pas.
- Si vous voulez mettre à jour les statistiques sur les tables de deltas des jeux de données versionnés, cochez-les.
- Si vous voulez mettre à jour les statistiques sur les tables d'archive d'historique des jeux de données qui sont activées pour l'archivage, cochez-les.
- Cochez Inclure les tables système pour mettre à jour les statistiques sur les tables système de géodatabase.
- Cliquez sur OK pour exécuter l'outil.
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 de deltas, les tables d'archive et/ou les tables système de 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 suivant, spécifiez 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 sur les tables système, spécifiez un fichier de connexion qui utilise le nom d'utilisateur et le mot de passe de l'administrateur de géodatabase.
# 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"