Actualizar estadísticas de base de datos

Disponible con una licencia Standard o Advanced.

El optimizador del sistema de administración de bases de datos usa estadísticas de base de datos para seleccionar el plan óptimo de ejecución para las consultas. Para mantener el rendimiento de las consultas, debe actualizar las estadísticas cuando el contenido de una tabla cambie de manera significativa; por ejemplo, después de cargar un gran número de registros en ella o de realizar muchas modificaciones en la tabla.

Se pueden actualizar las estadísticas de los siguientes tipo de tablas e índices:

  • La tabla seleccionada para analizar y sus índices asociados.
  • Las tablas delta de tablas y clases de entidad versionadas y los índices de las tablas delta
  • Las tablas de archivo histórico de los datasets habilitados para archivado y los índices de las tablas de archivo
  • Tablas del sistema de geodatabase
Nota:

La actualización de estadísticas de base de datos es una operación intensiva de entrada/salida (E/S). Debería actualizar las estadísticas en el momento en que haya menor tráfico en la base de datos.

En ArcGIS existen varios métodos para actualizar las estadísticas. Estos se describen en las secciones siguientes:

Utilizar la herramienta Analizar datasets

Puede utilizar la herramienta de geoprocesamiento Analizar datasets (ubicada en el conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos) para actualizar estadísticas. Esta herramienta le permite elegir las tablas de un dataset que se deben analizar y permite que el administrador de la geodatabase actualice las estadísticas en las tablas de sistema de la geodatabase.

Debe ejecutar la herramienta como propietario de las tablas que desea analizar. En el caso de las tablas del sistema de geodatabase, debe ejecutar la herramienta como administrador de la geodatabase. Las estadísticas de las tablas del sistema de geodatabase deberían actualizarse después de agregar varias tablas o clases de entidad nuevas a la geodatabase, de realizar un gran número de ediciones versionadas o de comprimir la geodatabase.

  1. Inicie ArcGIS Pro y conéctese a la geodatabase que contiene las tablas cuyas estadísticas desea actualizar.

    Conéctese como el propietario de las tablas que se van a analizar.

  2. Abra la herramienta de geoprocesamiento Analizar datasets.

    Puede escribir el nombre de la herramienta en el campo Buscar para buscar la herramienta y abrirla, o buscar la herramienta en el conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos.

  3. Use el archivo de conexión de base de datos que ha creado en el paso 1 como espacio de trabajo de entrada.
  4. Compruebe las tablas que desea analizar:
    • Si desea que las estadísticas se actualicen para las tablas base seleccionadas, deje activada la casilla Analizar tablas base para los datasets seleccionados.
    • Active Analizar las tablas delta para los datasets seleccionados para actualizar las estadísticas en las tablas de adiciones y eliminaciones de los datasets versionados.
    • Active Analizar tablas de archivos para los datasets seleccionados para actualizar las estadísticas en las tablas de datasets del archivo histórico que están habilitadas para el archivado.
    • Marque Incluir tablas del sistema para actualizar las estadísticas de las tablas del sistema de geodatabase. Tenga en cuenta que solo se puede ejecutar si está conectado a la geodatabase como el administrador de la geodatabase.
  5. Haga clic en Ejecutar.

Se actualizan las estadísticas de las tablas elegidas y sus índices.

Ejecutar un script de Python

Puede invocar la función AnalyzeDatasets_management en un script de Python para actualizar las estadísticas en las tablas base, las tablas delta, las tablas de archivo y las tablas de sistema de geodatabase. Al igual que ocurre con la herramienta Analizar datasets, debe ejecutar AnalyzeDatasets_management como propietario de las tablas que está analizando.

Cuando ejecute el siguiente script de Python, especifique un archivo de conexión de base de datos (archivo .sde). La secuencia de comandos actualiza las estadísticas de todas las tablas que pertenecen al usuario especificado en la conexión.

Por ejemplo, para ejecutar este script en Linux utilizando el archivo entgdb.sde de conexión de base de datos, que se encuentra en /usr/connections, escriba lo siguiente:

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

Si quiere ejecutar esta secuencia de comandos para actualizar las estadísticas de las tablas del sistema, especifique un archivo de conexión que se conecte como administrador de la geodatabase.

# 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.AnalyzeDatasets_management(workspace, "NO_SYSTEM", dataList, "ANALYZE_BASE","ANALYZE_DELTA","ANALYZE_ARCHIVE")
print("Analyze Complete")