Доступно с лицензией Standard или Advanced.
Статистика базы данных используется оптимизатором системы управления базами данных для выбора оптимального плана для запросов. Для поддержания производительности запросов, вы должны обновлять статистику после существенного изменения содержания таблицы; например, после загрузки в нее большого количество записей или выполнения в таблице значительной правки.
Статистика может обновляться для следующих типов таблиц и индексов:
- Таблица, которую вы выбираете для анализа, и связанные с ней индексы
- Дельта-таблицы версионных таблиц и классов объектов и индексы дельта-таблиц
- Исторические архивные таблицы наборов данных, которые разрешены для архивирования, и индексы архивных таблиц
- Системные таблицы базы геоданных
- Если анализировать класс объектов, который использует хранение геометрии sdebinary, то статистика также обновляется для таблицы объектов и таблицы пространственного индекса, и для индексов этих таблиц.
Обновить статистику в ArcGIS можно несколькими способами. Они описаны в следующих разделах:
Использование команды Analyze
Команду Анализировать можно использовать в ArcMap для обновления статистики отдельных наборов данных, которые вы выбираете напрямую в дереве Каталога. Для обновления статистики вы должны быть владельцем набора данных.
- Запустите ArcMap или ArcCatalog.
-
В разделе Подключения к базам данных дерева Каталога подключитесь к базе данных или многопользовательской базе геоданных, содержащей набор данных, для которого вы хотите обновить статистику.
Необходимо подключаться в качестве владельца набора данных.
- Щелкните правой кнопкой мыши на наборе данных в дереве Каталога.
Это может быть набор классов объектов, класс пространственных объектов, таблица, каталог растров, набор растровых данных или набор данных мозаики.
- Выберите пункт Управление и щелкните Анализ.
Для таблиц и индексов этого набора данных будет обновлена статистика, как описано в начале этого раздела.
Использование инструмента Анализировать наборы данных
Вы можете использовать инструмент геообработки Анализировать наборы данных (расположенный в группе Администрирование базы геоданных набора инструментов Управление данными) для обновления статистики. Используйте этот инструмент вместо команды Анализировать в ArcMap, если хотите обновить статистику для нескольких наборов данных одновременно, если вы хотите выбрать определенные таблицы для анализа (например, если вы хотите обновить статистику только для дельта-таблиц) или если нужно обновить статистику для системных таблиц базы геоданных.
Вы должны запустить инструмент в качестве владельца таблиц, которые вы хотите проанализировать. В случае системных таблиц базы геоданных, необходимо запустить инструмент от имени администратора базы геоданных. Необходимо обновить статистику для системных таблиц базы геоданных после добавления в базу геоданных множества новых таблиц или классов пространственных объектов.
- Запустите клиент ArcGIS Desktop и подключитесь к базе геоданных, которая содержит таблицы, для которых вы хотите обновить статистику.
Необходимо подключаться в качестве владельца набора данных для анализа.
- Откройте инструмент геообработки Анализировать наборы данных.
Вы можете ввести имя инструмента в поле Поиск, чтобы найти и запустить инструмент, либо перейти к нему в группе инструментов Администрирование базы геоданных набора инструментов Управление данными.
- Используйте файл подключения, созданный вами на шаге 1, в качестве входной рабочей области.
- Отметьте те таблицы, которые вы хотите проанализировать:
- Если вы хотите обновить статистику для выбранных базовых таблиц, оставьте отмеченной опцию Анализировать базовые таблицы выбранных наборов данных.
- Отметьте Анализировать дельта-таблицы выбранных наборов данных, чтобы обновить статистику добавлений и удалить таблицы версионных наборов данных.
- Отметьте Анализировать архивные таблицы выбранных наборов данных для обновления статистики для исторических архивных таблиц наборов данных, которые разрешены для архивирования.
- Отметьте Включить системные таблицы для обновления статистики по системным таблицам базы геоданных. Обратите внимание, это можно сделать только в случае, если вы подключились к базе геоданных с правами доступа администратора базы геоданных.
- Щелкните ОК.
Статистика обновляется для выбранных вами таблиц и их индексов.
Запустите скрипт Python
Вы можете вызвать функцию AnalyzeDatasets_management в скрипте Python для обновления статистики по базовым таблицам, дельта-таблицам, архивным таблицам и/или системным таблицам базы геоданных. Так же, как с инструментом Анализировать наборы данных, вы должны запустить AnalyzeDatasets_management в качестве владельца анализируемых вами таблиц.
Когда вы запустите следующий скрипт Python, укажите файл подключения к базе данных (.sde). Скрипт обновляет статистику для всех таблиц, принадлежащих пользователю, указанному в подключении.
Например, для запуска данного скрипта в Linux с использованием файла подключения к базе данных entgdb.sde, расположенного в /usr/connections, введите следующее:
./ AnalyzeDatasets.py /usr/connections/entgdb.sde
Для запуска данного скрипта для обновления статистики в системных таблицах, укажите файл подключения, который выполняет подключение, как администратор базы геоданных.
# 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")