인덱스 재구축 / 재구성
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은 동시 쓰기를 허용한다. 모든 ALTER에서 INPLACE가 가능한 것은 아니다.
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()모든 인덱스를 포그라운드에서 재구축하며 컬렉션에 락을 건다. 6.0+에서는 standalone에서만 실행된다(replica set 멤버에서는 허용되지 않음). replica set에서는 노드별로 순차(rolling) dropIndex + createIndex로 단일 인덱스를 재구축한다.
Redis
# Not applicable (core). If RediSearch is used:
# FT.ALTER / rebuilding is done per the module documentation.키-값 모델에는 전통적인 인덱스 유지보수가 없다.