이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 스포츠 토토 베트맨버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

Reindex

이름

Reindex- 인덱스 재건

시놉시스

reindex index | 표 | 데이터베이스 | 시스템이름[힘]

설명

Reindex인덱스 테이블에 저장된 데이터는 이전 사본을 대체합니다. 색인. 사용할 몇 가지 시나리오가 있습니다Reindex:

  • 젠 토토가 손상되어 더 이상 포함되지 않습니다 유효한 데이터. 이론적으로 이것은 결코 일어나지 않아야합니다 소프트웨어 버그 또는 하드웨어 고장.Reindex제공 복구 방법.

  • 젠 토토가되었습니다"Bloated", 즉, 비어 있거나 거의 비어있는 페이지가 포함되어 있습니다. 이것 B-Tree Indexes에서 발생할 수 있습니다PostgreSQL특정 드문 액세스에 따라 패턴.Reindex새로운 것을 작성하여 젠 토토의 공간 소비를 줄입니다. 죽은 페이지가없는 젠 토토 버전. 보다섹션 23.2더 많은 정보.

  • 스토리지 매개 변수 (예 : FillFactor)를 변경했습니다. 지수를 위해, 그리고 변화가 취해 졌는지 확인하고 싶습니다 전체 효과.

  • 동시에옵션 실패,"무효"색인. 그러한 색인입니다 쓸모 없지만 사용하기 편리 할 수 ​​있습니다Reindex그들을 재건하려면. 참고Reindex동시 빌드를 수행하지 않습니다. 생산을 방해하지 않고 젠 토토를 구축합니다 색인을 삭제하고 재발행해야합니다동시에 색인 생성명령.

매개 변수

색인

지정된 젠 토토 재현.

테이블

지정된 테이블의 모든 인덱스를 재현합니다. 만약 테이블에는 보조에"토스트"테이블, 그것은 또한 다시 표시됩니다.

데이터베이스

현재 데이터베이스 내의 모든 인덱스를 재현합니다. 공유 시스템 카탈로그의 색인도 처리됩니다. 이것 형태Reindex실행할 수 없습니다 트랜잭션 블록 내부.

시스템

내 시스템 카탈로그에서 모든 색인을 재현합니다 현재 데이터베이스. 공유 시스템 카탈로그의 색인은 다음과 같습니다 포함. 사용자 테이블의 인덱스는 처리되지 않습니다. 이것 형태Reindex실행할 수 없습니다 트랜잭션 블록 내부.

이름

특정 인덱스, 테이블 또는 데이터베이스의 이름 다시 알게되었습니다. 인덱스 및 테이블 이름은 스키마 자격을 사용할 수 있습니다. 현재,Reindex 데이터베이스Reindex System린덱스 만 할 수 있습니다 현재 데이터베이스이므로 매개 변수가 일치해야합니다 현재 데이터베이스 이름.

이것은 쓸모없는 옵션입니다. 경우 무시됩니다 지정.

노트

사용자 테이블에서 인덱스의 손상을 의심하면 를 사용하여 해당 인덱스 또는 테이블의 모든 인덱스를 재구성하기 만하면됩니다.Reindex Index또는Reindex Table.

회복 해야하는 경우 물건이 더 어렵습니다. 시스템 테이블에서 인덱스의 부패. 이 경우입니다 시스템이 용의자를 사용하지 않은 것이 중요합니다. 색인 자체. (실제로, 이런 종류의 시나리오에서 당신은 찾을 수 있습니다 이 서버 프로세스는 시작시 즉시 충돌하고 있습니다 손상된 지수에 의존하기 위해.) 안전하게 회복하기 위해 서버는로 시작해야합니다.-p옵션, 시스템 카탈로그에 인덱스를 사용하지 못하게합니다. 조회.

이것을하는 한 가지 방법은 서버를 종료하고 시작하는 것입니다. 단일 사용자PostgreSQL서버 와 함께-p옵션이 포함되어 있습니다 명령 줄. 그 다음에,Reindex 데이터베이스, Reindex System, Reindex Table또는Reindex 색인원하는 금액에 따라 발행 할 수 있습니다. 재구성. 의심스러운 경우 사용Reindex 체계모든 시스템 인덱스의 재구성을 선택합니다 데이터 베이스. 그런 다음 단일 사용자 서버 세션을 종료하고 다시 시작하십시오 일반 서버. 참조Postgres참조 페이지와 상호 작용하는 방법에 대한 자세한 내용 단일 사용자 서버 인터페이스.

또는 일반 서버 세션을 시작할 수 있습니다.-p명령 줄 옵션에 포함됩니다. 이를 수행하는 방법은 고객마다 다르지만 모두libpq기반 클라이언트입니다 를 설정할 수 있습니다pgoptions환경 변수-p시작하기 전에 고객. 이 방법은 잠금을 필요로하지 않지만 다른 고객은 여전히 ​​다른 사용자가 수리 될 때까지 손상된 데이터베이스에 연결 완전한.

Reindex는 한 방울과 유사합니다 젠 토토 내용이 재건된다는 점에서 젠 토토를 재현합니다. 할퀴다. 그러나 잠금 고려 사항은 오히려 있습니다 다른.reindexLocks Out은 쓰기입니다 인덱스의 상위 테이블을 읽지 않습니다. 또한 독점이 필요합니다 처리중인 특정 인덱스를 잠그십시오. 그 지수를 사용하려고 시도하는 것을 읽습니다. 대조적으로,Drop Index순간적으로 독점적 인 잠금을 취합니다 두 가지를 차단하는 부모 테이블은 쓰기와 읽기를 차단합니다. 후속색인 생성Locks Out은 쓰기를하지만 그렇지 않습니다 읽기; 색인이 없으므로 읽기는 사용하지 않습니다. 그것은 차단이 없지만 읽기가있을 수 있음을 의미합니다. 값 비싼 순차 스캔으로 강제.

단일 색인 또는 테이블을 reindexing의 소유자가 필요합니다. 그 지수 또는 테이블. 데이터베이스가 필요합니다 데이터베이스의 소유자 (따라서 소유자가 재건 할 수 있습니다. 다른 사용자가 소유 한 테이블의 색인). 물론 슈퍼업자 언제든지 모든 것을 다시 구사할 수 있습니다.

이전PostgreSQL 8.1, Reindex 데이터베이스처리 된 시스템 인덱스, 이름에서 기대할 수있는 모든 색인은 아닙니다. 이것 놀라운 요소를 줄이기 위해 변경되었습니다. 오래된 행동 로 사용할 수 있습니다.Reindex System.

이전PostgreSQL 7.4, Reindex 테이블자동으로하지 않았습니다 토스트 테이블을 처리하므로 이들은 별도의 명령. 이것은 여전히 ​​가능하지만 중복됩니다.

단일 색인 재건 :

reindex index my_index;

테이블의 모든 인덱스를 재구성my_table:

린덱스 테이블 my_table;

신뢰하지 않고 특정 데이터베이스의 모든 인덱스를 재구성하십시오 시스템이 이미 유효하도록 색인 :

$export pgoptions = "-p"$PSQL Broken_DB...
broken_db = reindex 데이터베이스 broken_db;
broken_db = \ q

호환성

없음ReindexSQL 표준.