Обслуживание индексов

Индексы могут создавать проблемы во многих приложениях, актив­но добавляющих и удаляющих записи в базе данных. Как и таблицы, индексы имеют свойство раздуваться. В предыдущем разделе говорилось о том, что изменения записей без использования НОТ могут вызывать раздувание индексов. Ин­дексы не по первичным ключам раздуваются также при обычных добавлениях записей — это присуще большинству реляционных баз данных. При автоматической сборке мусора раздутые индексы не обнару­живаются и никакие индексы не перестраиваются. Поэтому необхо­димо найти способ обслуживания индексов. PostgreSQL поддерживает перестраивание индексов. Инструмент для клиента базы данных reindexdb позволяет выполнять команду Reindex Из операционной системы:
При этом выполняется команда SQL Reindex Для каждой таблицы в заданной по умолчанию базе данных. Для перестраивания всех ин­дексов во всех базах данных используется опция — а:
Это отражено в документации. По собственному опыту могу ска­зать, что большинство индексов не требуется перестраивать, и, кроме того, команда Reindex Полностью блокирует таблицу на время своей работы. База данных может оказаться блокированной на несколько часов, так что советую испробовать другие средства достижения ва­ших целей. Например, из этого раздела.
Сначала создадим тестовую таблицу, один индекс по первичному ключу и один дополнительный индекс следующим образом: PostgreSQL поддерживает команду Create index concurrently, Кото­рая создает индекс без полной блокировки таблицы. Также PostgreSQL позволяет иметь два индекса с разными именами, но с одним и тем же определением. Фокус в том, чтобы создать новый индекс, идентичный старому, удалить старый индекс и присвоить новому имя старого. И вот результат — индекс перестроен, таблица не была заблокирована: Create index concurrently new_index ON test Test_category_idx



Рубрика: Женский интерес

Комментарии закрыты.