DBAtlas · Атлас эксплуатации баз данных

Перестроить / реорганизовать индекс

Oracle

ALTER INDEX customer_city_idx REBUILD ONLINE;

ONLINE перестраивает без блокировки таблицы (Enterprise Edition). Для переноса в другое табличное пространство: ... REBUILD TABLESPACE new_ts.

PostgreSQL

REINDEX INDEX CONCURRENTLY customer_city_idx;
-- Whole table: REINDEX TABLE CONCURRENTLY customer;

CONCURRENTLY (PG 12+) перестраивает, не блокируя запись в таблицу; медленнее, но безопасно.

MySQL

-- Rebuild InnoDB indexes + table:
ALTER TABLE customer ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE;
-- Alternative: OPTIMIZE TABLE customer;

LOCK=NONE допускает параллельную запись; INPLACE возможен не для каждого ALTER.

SQL Server

-- Rebuild for high fragmentation:
ALTER INDEX ALL ON dbo.customer REBUILD WITH (ONLINE = ON);
-- Lighter option for low fragmentation:
-- ALTER INDEX ALL ON dbo.customer REORGANIZE;

Типовой порог: фрагментация 5-30% — REORGANIZE, >30% — REBUILD. ONLINE — функция Enterprise.

MongoDB

db.customer.reIndex()

Перестраивает все индексы в foreground и блокирует коллекцию. В 6.0+ работает только на standalone (на членах набора реплик запрещено); в наборе реплик перестраивайте отдельный индекс через dropIndex + createIndex, узел за узлом (rolling).

Redis

# Not applicable (core). If RediSearch is used:
# FT.ALTER / rebuilding is done per the module documentation.

В модели ключ-значение нет традиционного обслуживания индексов.

Открыть в DBAtlas →