XX002: index_corrupted
PostgreSQL의미
인덱스 구조에서 손상이 감지되었다. 인덱스가 가리키는 데이터가 heap의 실제 행과 일치하지 않아 인덱스를 사용하는 쿼리가 잘못된 결과를 반환하거나 실패할 수 있다.
원인
하드웨어/스토리지 장애, 운영체제 glibc/ICU 업그레이드 후 collation(정렬 규칙) 변경으로 깨진 B-tree 순서, 또는 갑작스러운 장애가 원인이다. 특히 운영체제 collation 업데이트는 텍스트 인덱스에 조용한 손상을 일으킨다.
해결 방법
손상된 인덱스를 재생성한다: REINDEX INDEX idx_name; 또는 REINDEX TABLE my_table; 큰 테이블에서는 락을 줄이기 위해 REINDEX INDEX CONCURRENTLY를 사용한다. collation이 원인이면 영향을 받은 모든 텍스트 인덱스를 재생성하고 amcheck 확장(bt_index_check)으로 검증한다. 근본 원인이 하드웨어라면 스토리지를 교체한다.