Операция сжатия базы геоданных

Операция сжатия базы геоданных удаляет из системной таблицы ненужные состояния и строки, которые отслеживают версии и версионные изменения.

ПодсказкаПодсказка:

Чтобы понять операцию сжатия, сначала нужно понять, как работают версии. Если вы знакомы с этой концепцией, см. раздел Введение в версионное редактирование.

Что такое операция сжатия?

Операция сжатия удаляет состояния, которые более не связаны с версией, и переносит записи из дельта таблиц в бизнес-таблицу. Операцию сжатия может выполнять только администратор базы геоданных. Она выполняется для всех состояний базы геоданных независимо от владельца версии.

Операции сжатия необходимы, так как по мере редактирования базы геоданных дельта-таблицы увеличиваются в размерах и возрастает количество состояний. Чем больше таблицы и чем больше состояний, тем больше данных ArcGIS должен будет обрабатывать каждый раз при отображении версии или выполнении к ней запроса. Таким образом, самое большое влияние на производительность оказывает не число версий, а объем изменений, содержащихся в таблицах A и D для каждой версии. В результате версии могут иметь различное время ответа на запросы.

Для поддержания должного уровня производительности базы данных администратору базы геоданных необходимо периодически выполнять операцию сжатия для удаления неиспользуемых данных.

Для сжатия базы геоданных можно использовать команду Сжать (Compress) ArcGIS for Desktop или инструмент геообработки Сжать (Compress), а также сценарий Python. Сведения о сжатии базы геоданных в дереве каталога см. в разделе Сжатие многопользовательской базы геоданных, а сведения об инструменте геообработки и скрипте см. в разделе Сжатие.

Что происходит во время операции сжатия?

Операция сжатия сначала сканирует память для поиска конфигурации дерева состояний экземпляра. С помощью этой информации удаляются все состояния, которые не участвуют в родительской версии. При удалении состояния удаляются все строки из дельта-таблиц, связанных с этим состоянием.

На следующем этапе операции сжатия происхождение состояний кандидата сжимается в одно состояние. Происхождение кандидата — это набор состояний, которые можно сжать в одно состояние, не влияя на логическое представление таблицы в данной версии.

На последнем этапе строки из дельта-таблиц перемещаются в базовые (или бизнес) таблицы, если это необходимо.

На каждом этапе операции транзакции базы данных запускаются и останавливаются для каждой сжимаемой таблицы. Транзакция проверяет согласованность каждой таблицы на всех этапах процесса.

Операцию сжатия можно остановить во время выполнения, так как она транзакционно согласована. Поэтому при возникновении ошибки или при непредвиденной остановке операции сжимаемые версионные таблицы будут логически верны для любой версии. Остановить операцию сжатия можно, если вы запустили ее, когда пользователи все еще подключены к базе геоданных, а потом узнали, что на сжатие уходит много системных ресурсов. В этом случае вы можете остановить операцию и выполнить ее повторно с меньшим числом подключенных пользователей.

Так как транзакции сжатия могут быть объемными, создайте достаточно логических журналов и выделите достаточно места для обработки транзакции.

Полное сжатие базы геоданных

В полностью сжатой базы геоданных в дельта-таблицах нет строк, а дерево состояний обнулено. При полном сжатии базы геоданных производительность максимальная. Для этого выполните следующие действия:

Результаты каждой операции сжатия можно увидеть в таблице COMPRESS_LOG в базе геоданных (SDE_compress_log в базах геоданных SQL Server и PostgreSQL). Вы также можете изучить таблицу VERSIONS (SDE_versions в SQL Server и PostgreSQL), чтобы проверить, стал ли ИД состояния версии DEFAULT равным нулю. Если это так и других незаконченных версий нет, база полностью сжата.

Согласование, закрепление, удаление версий и отключение всех пользователей перед операцией сжатия не всегда возможно. Например, если вы отслеживаете историю с помощью версий или вам нужно сохранить версии дизайна для проекта, исторические версии и версии дизайна содержат состояние в дереве состояний. Поэтому эти состояния не будут удалены во время сжатия базы геоданных. Вы можете выполнить сжатие без выполнения всех этих действий и при этом производительность улучшится.

Частота операций сжатия

Частота выполнения операции сжатия зависит от объема изменений в базе геоданных. Если их много, базу геоданных нужно сжимать раз в день. Для среднего объема изменений базу геоданных нужно сжимать раз в неделю.

ПримечаниеПримечание:

Важно не делать период между сжатиями слишком длинным. Чем больше версионных изменений, тем дольше выполняется сжатие. Если не сжимать базу геоданных хотя бы раз в неделю, на сжатие может уйти несколько часов.

После сжатия базы геоданных

Вы должны обновить статистику базы геоданных после ее сжатия. Администратор базы геоданных должен обновить статистику системных таблиц, а отдельные пользователи могут обновить статистику для своих измененных наборов данных. Сведения об обновлении статистики см. в разделе Использование инструмента Анализировать наборы данных (Analyze Datasets) для обновления статистики для системных таблиц баз геоданных или разделе Обновление статистики базы геоданных с помощью команды Анализировать (Analyze).

9/11/2013