Сжатие базы геоданных удаляет из системной таблицы ненужные состояния и строки, которые отслеживают версии и версионные изменения.
Что такое сжатие базы геоданных?
При сжатии удаляются состояния, которые более не связаны с версией, а записи из дельта-таблиц переносятся в бизнес-таблицу. Сжатие может выполнять только администратор базы геоданных, но она выполняется для всех состояний базы геоданных, независимо от владельца версии.
Сжатие необходимо, так как по мере редактирования базы геоданных дельта-таблицы увеличиваются в размерах и возрастает количество состояний. Чем больше таблицы и чем больше состояний, тем больше данных ArcGIS должен будет обрабатывать каждый раз при отображении версии или выполнении к ней запроса. Таким образом, самое большое влияние на производительность оказывает не число версий, а объем изменений, содержащихся в таблицах A и D для каждой версии. В результате версии могут иметь различное время ответа на запросы.
Для поддержания должного уровня производительности базы данных администратору базы геоданных необходимо периодически выполнять сжатие для удаления неиспользуемых данных.
Вы можете использовать в ArcGIS Desktop команду Сжать, инструмент геообработки Сжать или скрипт Python.
Что происходит во время сжатия?
При сжатии сначала сканируется память для поиска конфигурации дерева состояний экземпляра. С помощью этой информации удаляются все состояния, которые не участвуют в родительской версии. При удалении состояния удаляются все строки из дельта-таблиц, связанных с этим состоянием.
На следующем этапе линейка состояний кандидата сжимается в одно состояние. Происхождение кандидата – это набор состояний, которые можно сжать в одно состояние, не влияя на логическое представление таблицы в данной версии.
На последнем этапе строки из дельта-таблиц перемещаются в базовые (или бизнес) таблицы, если это необходимо.
На каждом этапе операции транзакции базы данных запускаются и останавливаются для каждой сжимаемой таблицы. Транзакция проверяет согласованность каждой таблицы на всех этапах процесса.
Сжатие можно остановить во время выполнения, так как она транзакционно согласована. Поэтому при возникновении ошибки или при непредвиденной остановке операции сжимаемые версионные таблицы будут логически верны для любой версии. Остановить сжатие можно, если вы запустили его при подключенных к базе геоданных пользователях и заметили, что на сжатие уходит много системных ресурсов. В этом случае вы можете остановить операцию и выполнить ее повторно с меньшим числом подключенных пользователей.
Повторно постройте кластеризованные индексы базовых таблиц после сжатия, так как может произойти фрагментация бизнес-таблицы.
Полное сжатие базы геоданных
В полностью сжатой базы геоданных в дельта-таблицах нет строк, а дерево состояний обнулено. При полном сжатии базы геоданных производительность максимальная. Для этого выполните следующие действия:
- Согласуйте и закрепите все неучтенные изменения в дочерних версиях для версии DEFAULT. Как администратор базы геоданных, вы можете увидеть, в каком порядке версии должны согласовываться по умолчанию, открыв закладку Согласовать порядок (Reconcile Order) на закладке Версии (Versions) диалогового окна Администрирование базы геоданных. См. в разделе Свойства версий сведения о закладке Согласовать порядок (Reconcile Order).
- Удалите сами версии после согласования и закрепления изменений.
- Убедитесь, что ни один пользователь не подключен к базе геоданных.
- Выполните операцию сжатия.
Результаты каждой операции сжатия можно увидеть в ArcGIS Desktop в таблице SDE_compress_log. Вы также можете изучить таблицу SDE_versions в базе данных, чтобы проверить, стал ли ИД состояния версии DEFAULT равным нулю. Если это так и других незаконченных версий нет, база полностью сжата.
Согласование, закрепление, удаление версий и отключение всех пользователей перед сжатием не всегда возможно. Например, если вы отслеживаете историю с помощью версий или вам нужно сохранить версии дизайна для проекта, исторические версии и версии дизайна содержат состояние в дереве состояний. Поэтому эти состояния не будут удалены во время сжатия базы геоданных. Вы можете выполнить сжатие без выполнения всех этих действий и при этом производительность улучшится.
Частота сжатия
Частота сжатия зависит от объема изменений в базе геоданных. Если их много, базу геоданных нужно сжимать раз в день. Для среднего объема изменений базу геоданных нужно сжимать раз в неделю.
После сжатия базы геоданных
Обновите статистику базы геоданных после сжатия. Администратор базы геоданных должен обновить статистику версионных системных таблиц, а отдельные пользователи могут обновить статистику своих отредактированных наборов данных.