Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Перестроение индекса.
REINDEX {INDEX | TABLE | DATABASE | SYSTEM} name
Команда REINDEX перестраивает индекс, используя данные, хранящиеся в таблице индекса, и заменяет старую копию индекса. Команда REINDEX может использоваться в следующих случаях:
INDEX
TABLE
DATABASE
SYSTEM
name
REINDEX по своему эффекту аналогичен удалению и повторному созданию индекса, поскольку содержимое индекса перестраивается заново. Однако меры по блокировкам существенно различаются. REINDEX блокирует запись в родительскую таблицу индекса, но не блокирует чтение. Также он устанавливает исключительную блокировку на конкретный обрабатываемый индекс, что блокирует чтение через этот индекс. Напротив, DROP INDEX немедленно накладывает исключительную блокировку на родительскую таблицу, тем самым запрещая как запись, так и чтение. Последующая команда CREATE INDEX блокирует запись, но не блокирует чтение; поскольку индекс отсутствует, попыток чтения не происходит, что означает отсутствие блокировок, однако операции чтения могут вынужденно выполнять дорогостоящее последовательное сканирование.
Для перестроения одного индекса или таблицы необходимо быть владельцем этого индекса или таблицы. Для перестроения индексов всей базы данных необходимо быть владельцем базы данных (обратите внимание, что владелец базы данных может перестраивать индексы таблиц, принадлежащих другим пользователям).
REINDEX не обновляет статистику reltuples и relpages для индексов. Чтобы обновить эти значения, выполните команду ANALYZE для таблицы после перестроения индекса.
Если вы подозреваете, что индексы общих глобальных системных каталогов повреждены, вы можете перестроить их только в утилитарном режиме YMatrix. Типичным признаком повреждения общего индекса является ошибка «index is not btree»; в противном случае сервер может аварийно завершить работу при запуске из-за использования повреждённого индекса. В этом случае обратитесь в службу поддержки YMatrix: [email protected].
Перестроить один индекс:
REINDEX INDEX my_index;
Перестроить все индексы таблицы my_table:
REINDEX TABLE my_table;
Команда REINDEX отсутствует в стандарте SQL.