Основное отличие команд REINDEX и DROP INDEX при восстановлении повреждённых индексов в PostgreSQL заключается в механизме блокировок: 34
- REINDEX блокирует запись, но не чтение родительской таблицы индекса. 14 Также эта команда устанавливает блокировку ACCESS EXCLUSIVE для обрабатываемого индекса, что блокирует чтение таблицы, при котором задействуется этот индекс. 1
- DROP INDEX моментально устанавливает блокировку ACCESS EXCLUSIVE на родительскую таблицу, блокируя и запись, и чтение. 1 Последующая команда CREATE INDEX блокирует запись, но не чтение. 1
Таким образом, REINDEX пересоздаёт индекс с нуля, в то время как DROP INDEX удаляет индекс и создаёт его заново. 24