Какая польза от команды reorg в IBM DB2? - PullRequest
5 голосов
/ 05 августа 2010

Какая польза от команды reorg в ibm db2 db? Что делает Реорг внутренне? Необходимо ли запускать reorg, если в таблице создаются новые индексы?

Ответы [ 3 ]

3 голосов
/ 10 января 2014

Операция REORG выполняет следующие функции:

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

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

  • Заполняет индекс DEFERRED, созданный с помощью инструкции CREATE INDEX. Отложенный индекс - это пустая структура индекса, которую можно заполнить позднее.

  • Перестраивает предварительно вычисленные представления. Например, если в вашем приложении для обслуживания предварительно вычисленных представлений установлено значение OFF, вы можете использовать команду REORG, чтобы перестраивать только предварительно вычисленные представления, не касаясь индексов в целевой таблице. Кроме того, вы можете использовать команду REORG для перестроения как индексов, так и представлений.

В дополнение к перестройке данных агрегированных таблиц команда REORG перестраивает индексы для агрегированных таблиц.

Операция REORG необходима в следующих случаях:

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

  • Всякий раз, когда изменения в базе данных затрагивают более 30 процентов данных, запускайте TMU с оператором REORG для любых таблиц, которые были изменены напрямую. Периодическое восстановление таких таблиц и индексов с помощью оператора REORG обеспечивает ссылочную целостность и оптимальную производительность.

  • Для реорганизации недопустимых индексов STAR. Некоторые операции могут сделать недействительными индексы STAR. Например, увеличение параметра MAXROWS PER SEGMENT или MAXSEGMENTS в таблице или использование оператора ALTER для расширения сегмента может сделать недействительными индексы STAR для таблиц, которые ссылаются на измененную таблицу. Эти операции всегда генерируют предупреждающее сообщение о том, что индексы STAR, основанные на измененной таблице, могут быть недействительными, и в этом случае затронутые индексы STAR должны быть реорганизованы. Вы можете либо реорганизовать затронутые индексы при выдаче сообщения, либо запланировать операцию REORG на более удобное время. Однако любая операция без запроса (INSERT, UPDATE или DELETE) для таблицы с недопустимым индексом приводит к сообщению об ошибке, в котором говорится, что индекс должен быть реорганизован. Необходимо выполнить операцию REORG, прежде чем к таблице можно будет получить доступ для операций INSERT, UPDATE, DELETE или LOAD.

REORG не требуется в следующих случаях:

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

  • Если таблица и индексы сегментированы одинаково и новые данные индекса загружаются в новые сегменты индекса, соответствующие новым сегментам таблицы.

1 голос
/ 05 августа 2010

Когда вы удаляете запись (или строку) в (по крайней мере для iSeries) DB2, она помечает запись для удаления, но не удаляет ее физически. Когда выполняется reorg, он берет эти записи, помеченные для удаления, а затем физически удаляет их. Я считаю, что это также перемещает все записи данных для оптимальной производительности в этом процессе. В iSeries эту потребность можно сделать устаревшей, указав файлу (или таблице) повторно использовать удаляемые записи.

Как я уже говорил, я знаю, что это относится к DB2 for iSeries (или IBM i). Я могу только предположить, что этот процесс похож на DB2.

0 голосов
/ 18 августа 2010

Что он на самом деле делает, так это возвращает физические записи в порядок первичных ключей, с правильным количеством свободного места (указывается PCTFREE) в нужных местах.

Очевидно, что для этого также необходимо перестроить индексы какхорошо, что приводит к хорошо сбалансированным btrees.

...