InfoGrab DocsInfoGrab Docs

해시 인덱스

요약

PostgreSQL은 일반적인 B-tree 인덱스 외에도 해시 인덱스를 지원합니다. 해시 인덱스 작업은 현재 WAL 로그에 기록되지 않으므로, 기록되지 않은 변경 사항이 있는 경우 데이터베이스 충돌 후 REINDEX로 해시 인덱스를 재빌드해야 할 수 있습니다.

PostgreSQL은 일반적인 B-tree 인덱스 외에도 해시 인덱스를 지원합니다. 그러나 해시 인덱스는 어떠한 경우에도 사용을 피해야 합니다. 해시 인덱스가 때로는 더 나은 성능을 제공할 수 있지만, 재해싱(rehashing)의 비용이 매우 높을 수 있습니다. 더 중요한 점은, 적어도 PostgreSQL 10.0 이전까지 해시 인덱스는 WAL 로그에 기록되지 않으므로 어떠한 복제 서버에도 복제되지 않는다는 것입니다. PostgreSQL 문서에는 다음과 같이 나와 있습니다:

해시 인덱스 작업은 현재 WAL 로그에 기록되지 않으므로, 기록되지 않은 변경 사항이 있는 경우 데이터베이스 충돌 후 REINDEX로 해시 인덱스를 재빌드해야 할 수 있습니다. 또한 초기 기본 백업 이후에는 스트리밍 또는 파일 기반 복제를 통해 해시 인덱스 변경 사항이 복제되지 않으므로, 이후 해당 인덱스를 사용하는 쿼리에 잘못된 결과를 반환합니다. 이러한 이유로 현재 해시 인덱스 사용은 권장하지 않습니다.

RuboCop은 해시 인덱스 사용이 감지되면 위반(offense)을 등록하도록 구성되어 있습니다.

해시 인덱스 대신 일반적인 B-tree 인덱스를 사용해야 합니다.

해시 인덱스

GitLab v19.1
원문 보기
요약

PostgreSQL은 일반적인 B-tree 인덱스 외에도 해시 인덱스를 지원합니다. 해시 인덱스 작업은 현재 WAL 로그에 기록되지 않으므로, 기록되지 않은 변경 사항이 있는 경우 데이터베이스 충돌 후 REINDEX로 해시 인덱스를 재빌드해야 할 수 있습니다.

PostgreSQL은 일반적인 B-tree 인덱스 외에도 해시 인덱스를 지원합니다. 그러나 해시 인덱스는 어떠한 경우에도 사용을 피해야 합니다. 해시 인덱스가 때로는 더 나은 성능을 제공할 수 있지만, 재해싱(rehashing)의 비용이 매우 높을 수 있습니다. 더 중요한 점은, 적어도 PostgreSQL 10.0 이전까지 해시 인덱스는 WAL 로그에 기록되지 않으므로 어떠한 복제 서버에도 복제되지 않는다는 것입니다. PostgreSQL 문서에는 다음과 같이 나와 있습니다:

해시 인덱스 작업은 현재 WAL 로그에 기록되지 않으므로, 기록되지 않은 변경 사항이 있는 경우 데이터베이스 충돌 후 REINDEX로 해시 인덱스를 재빌드해야 할 수 있습니다. 또한 초기 기본 백업 이후에는 스트리밍 또는 파일 기반 복제를 통해 해시 인덱스 변경 사항이 복제되지 않으므로, 이후 해당 인덱스를 사용하는 쿼리에 잘못된 결과를 반환합니다. 이러한 이유로 현재 해시 인덱스 사용은 권장하지 않습니다.

RuboCop은 해시 인덱스 사용이 감지되면 위반(offense)을 등록하도록 구성되어 있습니다.

해시 인덱스 대신 일반적인 B-tree 인덱스를 사용해야 합니다.