이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 스포츠 토토 베트맨버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

REINDEX

이름

REINDEX -- 색인 다시 작성

시놉시스

REINDEX [ ( VERBOSE ) ]  인덱스 | 표 | 스키마 | 데이터베이스 | 시스템이름

설명

REINDEX인덱스 테이블에 저장된 데이터를 사용하여 인덱스를 다시 작성하고 인덱스의 이전 복사본을 대체합니다. 사용할 수 있는 몇 가지 시나리오가 있습니다.REINDEX:

  • 색인이 손상되어 더 이상 유효한 데이터를 포함하지 않습니다. 이론적으로는 절대 이런 일이 발생해서는 안 되지만 실제로는 소프트웨어 버그나 하드웨어 오류로 인해 범퍼카 토토가 손상될 수 있습니다.REINDEX복구 방법을 제공합니다.

  • 색인이 되었습니다"부풀어오르다", 즉 비어 있거나 거의 비어 있는 페이지가 많이 포함되어 있습니다. 이는 B-트리 범퍼카 토토에서 발생할 수 있습니다.포스트그레SQL일반적이지 않은 특정 액세스 패턴에 따라.REINDEX은 데드 페이지 없이 범퍼카 토토의 새 버전을 작성하여 범퍼카 토토의 공간 소비를 줄이는 방법을 제공합니다. 참조스포츠 토토 베트맨 : 문서 : 9.5 : 일상적인 다시 인덱싱더 많은 정보를 원하시면.

  • 범퍼카 토토에 대한 저장 매개변수(예: 채우기 요소)를 변경했으며 변경 사항이 완전히 적용되기를 원합니다.

  • 다음을 사용한 색인 빌드동시옵션이 실패하여 다음을 남깁니다."잘못됨"색인. 이러한 범퍼카 토토는 쓸모가 없지만 사용하기 편리할 수 있습니다.REINDEX재구축합니다. 참고하세요REINDEX동시 빌드를 수행하지 않습니다. 생산을 방해하지 않고 인덱스를 구축하려면 인덱스를 삭제하고 다시 발행해야 합니다.동시에 인덱스 생성명령.

매개변수

INDEX

지정된 색인을 다시 생성하십시오.

지정된 테이블의 모든 범퍼카 토토를 다시 생성합니다. 테이블에 보조 테이블이 있는 경우"토스트"테이블도 다시 색인화되었습니다.

스키마

지정된 스키마의 모든 인덱스를 다시 생성합니다. 이 스키마의 테이블에 보조 스키마가 있는 경우"토스트"테이블도 다시 색인화되었습니다. 공유 시스템 카탈로그의 인덱스도 처리됩니다. 이 형태는REINDEX트랜잭션 블록 내에서는 실행할 수 없습니다.

데이터베이스

현재 데이터베이스 내의 모든 색인을 다시 생성하십시오. 공유 시스템 카탈로그의 인덱스도 처리됩니다. 이 형태는REINDEX트랜잭션 블록 내에서는 실행할 수 없습니다.

시스템

현재 데이터베이스 내의 시스템 카탈로그에 대한 모든 색인을 다시 생성하십시오. 공유 시스템 카탈로그의 인덱스가 포함됩니다. 사용자 테이블의 인덱스는 처리되지 않습니다. 이 형태는REINDEX트랜잭션 블록 내에서는 실행할 수 없습니다.

이름

재인덱싱할 특정 인덱스, 테이블 또는 데이터베이스의 이름. 인덱스 및 테이블 이름은 스키마로 한정될 수 있습니다. 현재,REINDEX 데이터베이스그리고REINDEX 시스템현재 데이터베이스만 다시 색인화할 수 있으므로 해당 매개변수는 현재 데이터베이스 이름과 일치해야 합니다.

상세

각 색인이 다시 색인화될 때 진행 보고서를 인쇄합니다.

참고

사용자 테이블의 인덱스 손상이 의심되는 경우 다음을 사용하여 해당 인덱스 또는 테이블의 모든 인덱스를 간단히 재구축할 수 있습니다.REINDEX 인덱스또는REINDEX 테이블.

시스템 테이블의 색인 손상을 복구해야 하는 경우 상황은 더욱 어렵습니다. 이 경우 시스템이 의심되는 인덱스 자체를 사용하지 않는 것이 중요합니다. (실제로 이런 종류의 시나리오에서는 손상된 인덱스에 대한 의존으로 인해 서버 프로세스가 시작 시 즉시 충돌하는 것을 확인할 수 있습니다.) 안전하게 복구하려면 서버를 다음으로 시작해야 합니다.-P옵션, 시스템 카탈로그 조회에 색인을 사용하지 못하게 하는 옵션입니다.

이를 수행하는 한 가지 방법은 서버를 종료하고 단일 사용자를 시작하는 것입니다.PostgreSQL서버가-P옵션이 명령줄에 포함되어 있습니다. 그럼,REINDEX 데이터베이스, REINDEX 시스템, REINDEX 테이블또는REINDEX 인덱스재구축하려는 정도에 따라 발행될 수 있습니다. 의심스러운 경우 다음을 사용하세요.REINDEX 시스템데이터베이스의 모든 시스템 색인 재구성을 선택합니다. 그런 다음 단일 사용자 서버 세션을 종료하고 일반 서버를 다시 시작합니다. 참조포스트그레스단일 사용자 서버 인터페이스와 상호작용하는 방법에 대한 자세한 내용은 참조 페이지입니다.

또는 일반 서버 세션을 다음으로 시작할 수 있습니다.-P명령줄 옵션에 포함되어 있습니다. 이를 수행하는 방법은 클라이언트마다 다르지만 모두libpq기반 클라이언트에서는 다음을 설정할 수 있습니다.PGOPTIONS환경 변수를-P클라이언트를 시작하기 전에. 이 방법에서는 다른 클라이언트를 잠글 필요가 없지만 복구가 완료될 때까지 다른 사용자가 손상된 데이터베이스에 연결하지 못하도록 하는 것이 현명할 수 있습니다.

REINDEX범퍼카 토토 내용이 처음부터 다시 작성된다는 점에서 범퍼카 토토 삭제 및 재생성과 유사합니다. 그러나 잠금 고려 사항은 다소 다릅니다.REINDEX범퍼카 토토의 상위 테이블에 대한 쓰기는 차단하지만 읽기는 차단하지 않습니다. 또한 처리 중인 특정 범퍼카 토토에 대해 배타적 잠금을 수행하여 해당 범퍼카 토토를 사용하려는 읽기를 차단합니다. 대조적으로,범퍼카 토토 삭제일시적으로 상위 테이블에 배타적 잠금을 걸어 쓰기와 읽기를 모두 차단합니다. 후속색인 생성쓰기는 잠그지만 읽기는 잠그지 않습니다. 범퍼카 토토가 없기 때문에 어떤 읽기도 이를 사용하려고 시도하지 않습니다. 즉, 차단은 없지만 읽기는 비용이 많이 드는 순차 스캔으로 강제 실행될 수 있습니다.

단일 색인이나 테이블을 다시 색인화하려면 해당 색인이나 테이블의 소유자여야 합니다. 데이터베이스를 다시 인덱싱하려면 해당 데이터베이스의 소유자여야 합니다. 따라서 소유자는 다른 사용자가 소유한 테이블의 인덱스를 다시 작성할 수 있습니다. 물론 슈퍼유저는 언제든지 무엇이든 다시 색인화할 수 있습니다.

단일 색인 재구축:

REINDEX 인덱스 my_index;

테이블의 모든 범퍼카 토토를 다시 작성내_테이블:

REINDEX 테이블 my_table;

시스템 인덱스가 이미 유효한지 신뢰하지 않고 특정 데이터베이스의 모든 인덱스를 다시 빌드합니다.

$ PGOPTIONS="-P" 내보내기
$ psql broken_db...
broken_db= REINDEX DATABASE broken_db;
broken_db= \q

호환성

없습니다REINDEXSQL 표준의 명령입니다.