스포츠 토토 베트맨 - 인덱스 재건
스포츠 토토 베트맨 [(옵션
[, ...])] index | 표 | 스키마 [동시에]이름
스포츠 토토 베트맨 [(옵션
[, ...])] 데이터베이스 | System [동시에] [이름
]여기서옵션
중 하나 일 수 있습니다 :동시에 [부울
] 테이블 스페이스new_tablespace
Verbose [부울
]
스포츠 토토 베트맨
인덱스 테이블에 저장된 데이터를 사용하여 인덱스를 다시 작성하여 색인의 기존 사본을 대체합니다. 사용할 몇 가지 시나리오가 있습니다스포츠 토토 베트맨
:
인덱스가 손상되었으며 더 이상 유효한 데이터를 포함하지 않습니다. 이론적으로는 이런 일이 일어나지 않아야하지만 실제로는 소프트웨어 버그 나 하드웨어 고장으로 인해 인덱스가 손상 될 수 있습니다.스포츠 토토 베트맨
복구 방법을 제공합니다.
인덱스가되었습니다“Bloated”, 그것은 비어 있거나 거의 비어있는 많은 페이지를 포함합니다. 이것은 b- 트리 색인에서에서 발생할 수 있습니다.PostgreSQL특정 드문 액세스 패턴 아래.스포츠 토토 베트맨
는 죽은 페이지없이 인덱스의 새 버전을 작성하여 인덱스의 공간 소비를 줄이는 방법을 제공합니다. 보다섹션 24.2자세한 내용은
당신은 색인에 대한 스토리지 매개 변수 (예 : Fillfactor)를 변경하고 변경이 완전한 효과가 있는지 확인하고자합니다.
인덱스 빌드가에 실패한 경우동시에
옵션,이 색인은로 남겨 둡니다.“Invalid”. 이러한 인덱스는 쓸모가 없지만 사용하기 편리 할 수 있습니다스포츠 토토 베트맨
재건하려면. 만스포츠 토토 베트맨 Index
유효하지 않은 인덱스에서 동시 빌드를 수행 할 수 있습니다.
index
지정된 인덱스를 재현합니다. 이 형태의스포츠 토토 베트맨
분할 된 인덱스와 함께 사용하면 트랜잭션 블록 내부에서 실행할 수 없습니다.
테이블
지정된 테이블의 모든 인덱스를 재현합니다. 테이블에 보조가있는 경우“토스트”테이블, 그것은 또한 다시 표시됩니다. 이 형태의스포츠 토토 베트맨
파티션 된 테이블과 함께 사용하면 트랜잭션 블록 내부에서 실행할 수 없습니다.
스키마
지정된 스키마의 모든 색인을 재현합니다. 이 스키마의 테이블에 보조가있는 경우“토스트”테이블, 그것은 또한 다시 표시됩니다. 공유 시스템 카탈로그의 색인도 처리됩니다. 이 형태의스포츠 토토 베트맨
트랜잭션 블록 내부에서 실행할 수 없습니다.
데이터베이스
시스템 카탈로그를 제외한 현재 데이터베이스 내의 모든 인덱스를 재현합니다. 시스템 카탈로그의 인덱스는 처리되지 않습니다. 이 형태의스포츠 토토 베트맨
트랜잭션 블록 내부에서 실행할 수 없습니다.
시스템
현재 데이터베이스 내 시스템 카탈로그에서 모든 색인을 재현합니다. 공유 시스템 카탈로그의 인덱스가 포함되어 있습니다. 사용자 테이블의 인덱스는 처리되지 않습니다. 이 형태의스포츠 토토 베트맨
트랜잭션 블록 내부에서 실행할 수 없습니다.
이름
특정 색인, 표 또는 데이터베이스의 이름은 다시 표시됩니다. 인덱스 및 테이블 이름은 스키마 자격을 사용할 수 있습니다. 현재,스포츠 토토 베트맨 데이터베이스
and스포츠 토토 베트맨 System
현재 데이터베이스 만 다시 표시 할 수 있습니다. 그들의 매개 변수는 선택 사항이며 현재 데이터베이스 이름과 일치해야합니다.
동시에
이 옵션이 사용될 때PostgreSQL테이블에서 동시 인서트, 업데이트 또는 삭제를 방지하는 잠금 장치를 사용하지 않고 인덱스를 재구성합니다. 표준 인덱스는 잠금을 재건 해제 할 때까지 테이블에 쓴 (읽지 않음)를 재건합니다. 이 옵션을 사용할 때 알아야 할 몇 가지 경고가 있습니다. 참조지수 재건 동시에아래.
임시 테이블의 경우스포츠 토토 베트맨
| 다른 세션에 액세스 할 수없고, 비 일치한 스포츠 토토 베트맨는 저렴합니다..
테이블 스페이스
새로운 테이블 스페이스에서 인덱스가 재건 될 것이라고 지정합니다.
Verbose
각 지수가 다시 표시되면 진행 보고서를 인쇄합니다.
부울
선택한 옵션을 켜거나 끄야하는지 여부를 지정합니다. 당신은 쓸 수 있습니다true
, on
, 또는1
옵션을 활성화하려면거짓
, OFF
또는0
비활성화하려면. 그만큼부울
값도 생략 할 수 있습니다.true
가정됩니다.
new_tablespace
인덱스가 재건 될 테이블 스페이스.
사용자 테이블에서 인덱스의 손상이 의심되는 경우 사용하여 해당 색인 또는 모든 인덱스를 재 구축 할 수 있습니다스포츠 토토 베트맨 Index
또는스포츠 토토 베트맨 Table
.
시스템 테이블에서 인덱스의 손상을 복구 해야하는 경우 문제가 더 어렵습니다. 이 경우 시스템이 용의자 지수 자체를 사용하지 않은 것이 중요합니다. (실제로 이러한 종류의 시나리오에서는 손상된 인덱스에 대한 의존으로 인해 서버 프로세스가 시작시 즉시 충돌하고 있음을 알 수 있습니다.) 안전하게 복구하려면 서버는로 시작해야합니다.-p
옵션, 시스템 카탈로그 조회에 인덱스를 사용하지 못하게합니다.
이 작업을 수행하는 한 가지 방법은 서버를 종료하고 단일 사용자를 시작하는 것입니다PostgreSQL서버가있는-p
옵션은 명령 줄에 포함되어 있습니다. 그 다음에,스포츠 토토 베트맨 데이터베이스
, 스포츠 토토 베트맨 System
, 스포츠 토토 베트맨 Table
또는스포츠 토토 베트맨 Index
재구성하려는 양에 따라 발행 할 수 있습니다. 의심스러운 경우 사용스포츠 토토 베트맨 System
데이터베이스에서 모든 시스템 인덱스의 재구성을 선택합니다. 그런 다음 단일 사용자 서버 세션을 종료하고 일반 서버를 다시 시작하십시오. 참조Postgres참조 페이지 단일 사용자 서버 인터페이스와 상호 작용하는 방법에 대한 자세한 내용.
또는 일반 서버 세션을 시작할 수 있습니다.-p
명령 줄 옵션에 포함되어 있습니다. 이를 수행하는 방법은 고객마다 다르지만 모두libpq기반 클라이언트,를 설정할 수 있습니다pgoptions
환경 변수 to-p
클라이언트를 시작하기 전에. 이 방법은 다른 클라이언트를 잠그는 것이 필요하지 않지만 수리가 완료 될 때까지 다른 사용자가 손상된 데이터베이스에 연결하는 것을 방지하는 것이 여전히 현명 할 수 있습니다..
스포츠 토토 베트맨
는 인덱스 내용이 처음부터 재건된다는 점에서 인덱스의 드롭 및 재생성과 유사합니다. 그러나 잠금 고려 사항은 다소 다릅니다.스포츠 토토 베트맨
Locks Out은 쓰기를 읽지 만 인덱스의 상위 테이블을 읽지 않습니다. 또한도 필요합니다.액세스 독점
처리중인 특정 인덱스를 잠그고 해당 인덱스를 사용하려는 읽기를 차단합니다. 특히 쿼리 플래너는를 취하려고합니다.액세스 공유
쿼리에 관계없이 테이블의 모든 색인을 잠그십시오스포츠 토토 베트맨
계획이 캐시 되고이 인덱스를 사용하지 않는 일부 준비된 쿼리를 제외하고는 거의 모든 쿼리를 차단합니다. 대조적으로,Drop Index
순간적으로액세스 독점
부모 테이블을 잠그고 두 글과 읽기를 차단합니다. 후속색인 생성
Locks Out은 쓰기를 읽지 만 읽지 않습니다. 인덱스가 없으므로 읽기가 사용하려고 시도하지 않으므로 차단이 없지만 읽기가 값 비싼 순차적 스캔으로 강요 될 수 있음을 의미합니다.
while스포츠 토토 베트맨
가 실행 중입니다.search_path일시적으로 변경PG_CATALOG, PG_TEMP
.
단일 색인 또는 테이블에 스포츠 토토 베트맨ing유지 관리
테이블의 특권.스포츠 토토 베트맨
분할 된 인덱스 또는 테이블에서유지 관리
분할 된 테이블의 특권, 그러한 명령은 개별 파티션을 처리 할 때 권한 검사를 건너 뜁니다. 스키마 또는 데이터베이스를 다시 표시하는 것은 해당 스키마 또는 데이터베이스의 소유자가되거나의 권한이 있어야합니다.pg_maintain
역할. 비 슈퍼 사용자가 다른 사용자가 소유 한 테이블의 인덱스를 재건 할 수 있다는 점에 유의하십시오. 그러나 특별한 예외로스포츠 토토 베트맨 데이터베이스
, 스포츠 토토 베트맨 Schema
및스포츠 토토 베트맨 System
사용자가가없는 한 공유 카탈로그에서 인덱스를 건너 뛸 것입니다.유지 관리
카탈로그의 특권.
스포츠 토토 베트맨ing 파티션 인덱스 또는 분할 된 테이블이 지원됩니다스포츠 토토 베트맨 Index
또는스포츠 토토 베트맨 테이블
22369_22582
사용시테이블 스페이스
스포츠 토토 베트맨
분할 된 인덱스 또는 테이블에서 잎 파티션의 테이블 스페이스 참조 만 업데이트됩니다. 분할 된 인덱스가 업데이트되지 않으므로 별도로 사용하는 것이 좋습니다Alter Table 만
새로운 파티션이 새 테이블 스페이스를 물려 받으십시오. 실패시 모든 인덱스를 새 테이블 스페이스로 옮겼을 수 있습니다. 명령을 다시 실행하면 모든 리프 파티션을 재건하고 이전에 처리되지 않은 인덱스를 새 테이블 스페이스로 이동합니다.
if스키마
, 데이터베이스
또는시스템
테이블 스페이스
, 시스템 관계가 건너 뛰고 단일경고
생성됩니다. 토스트 테이블의 인덱스는 재건되었지만 새 테이블 스페이스로 이동하지는 않습니다.
인덱스 재건은 데이터베이스의 정기적 인 작동을 방해 할 수 있습니다. 보통PostgreSQL인덱스가 쓰기에 대해 재건 된 테이블을 잠그고 테이블의 단일 스캔으로 전체 인덱스 빌드를 수행합니다. 다른 트랜잭션은 여전히 테이블을 읽을 수 있지만 테이블에 행을 삽입, 업데이트 또는 삭제하려고하면 인덱스 재건이 완료 될 때까지 차단됩니다. 시스템이 라이브 프로덕션 데이터베이스 인 경우 심각한 영향을 줄 수 있습니다. 매우 큰 테이블을 색인화하는 데 많은 시간이 걸릴 수 있으며, 작은 테이블의 경우, 인덱스 재건은 제작 시스템에 허용 할 수없는 기간 동안 작가를 잠글 수 있습니다.
PostgreSQL쓰기의 최소 잠금으로 재건축 인덱스를 지원합니다. 이 방법은를 지정하여 호출됩니다.동시에
옵션스포츠 토토 베트맨
. 이 옵션이 사용될 때PostgreSQL각 지수에 대해 테이블의 두 스캔을 수행해야하며, 이는 재건되어야하며 인덱스를 사용할 수있는 모든 기존 트랜잭션의 종료를 기다려야합니다. 이 방법은 표준 지수 재건보다 더 많은 총 작업이 필요하며 인덱스를 수정할 수있는 미완성 트랜잭션을 기다려야하므로 완료하는 데 훨씬 더 오래 걸립니다. 그러나 인덱스가 재건되는 동안 일반 작업이 계속 될 수 있으므로이 방법은 생산 환경에서 인덱스를 재건하는 데 유용합니다. 물론, 인덱스 재건으로 부과 된 추가 CPU, 메모리 및 I/O 부하는 다른 작업 속도를 늦출 수 있습니다.
다음 단계는 동시 리인덱스에서 발생합니다. 각 단계는 별도의 거래에서 실행됩니다. 재건 할 인덱스가 여러 개있는 경우 각 단계는 다음 단계로 이동하기 전에 모든 인덱스를 반복합니다.
카탈로그에 새로운 과도 지수 정의가 추가됩니다pg_index
. 이 정의는 이전 색인을 대체하는 데 사용됩니다. 에이공유 업데이트 독점
처리 중에 스키마 수정을 방지하기 위해 관련 테이블뿐만 아니라 다시 표시되는 인덱스에서 세션 수준에서 잠금이 발생합니다.
인덱스를 구축하는 첫 번째 패스는 각각의 새로운 인덱스에 대해 수행됩니다. 인덱스가 구축되면 플래그PG_INDEX.INDISREADY
로 전환“true”삽입 준비를하기 위해 빌드를 수행 한 트랜잭션이 완료되면 다른 세션에 보이도록합니다. 이 단계는 각 지수에 대해 별도의 트랜잭션에서 수행됩니다.
그런 다음 첫 번째 패스가 작동하는 동안 추가 된 튜플을 추가하기 위해 두 번째 패스가 수행됩니다. 이 단계는 각 지수에 대해 별도의 트랜잭션에서도 수행됩니다.
인덱스를 참조하는 모든 제약 조건은 새로운 인덱스 정의를 참조하도록 변경되고 인덱스 이름이 변경됩니다. 이 시점에서pg_index.indisvalid
로 전환“true”새로운 지수 및 to“거짓”기존의 경우, 캐시 무효화가 수행되어 기존 색인을 무효화하는 모든 세션이 발생합니다.
이전 인덱스는PG_INDEX.INDISREADY
전환“거짓”새로운 튜플 삽입을 방지하려면 이전 색인을 참조 할 수있는 실행 쿼리를 기다린 후.
이전 인덱스가 삭제됩니다. 그만큼공유 업데이트 독점
인덱스 및 테이블에 대한 세션 잠금 장치가 해제됩니다.
고유 한 지수의 독창성 위반과 같은 지수를 재건하는 동안 문제가 발생하면스포츠 토토 베트맨
명령은 실패하지만 뒤에 남겨 둡니다.“잘못된”새로운 인덱스 외에도 기존 인덱스. 이 색인은 불완전 할 수 있으므로 쿼리 목적으로 무시됩니다. 그러나 여전히 업데이트 오버 헤드를 소비합니다. 그만큼PSQL \ d
명령은와 같은 색인을보고합니다.Invalid
:
postgres =# \ d 탭 "public.tab"테이블 열 | 유형 | 수정 자 --------+--------+----------- col | 정수 | 인덱스 : "idx"btree (col) "idx_ccnew"btree (col) invalid
인덱스가 표시된 경우Invalid
접미사ccnew
, 그런 다음 동시 작동 중에 생성 된 과도 지수에 해당하며 권장되는 복구 방법은를 사용하여 삭제하는 것입니다.Drop Index
, 그런 다음 시도스포츠 토토 베트맨 동시에
다시. 유효하지 않은 인덱스가 대신 접미사 인 경우ccold
, 삭제할 수없는 원래 색인에 해당합니다. 권장 복구 방법은 재건축이 성공적 이었으므로 상기 색인을 삭제하는 것입니다.
일반 색인 빌드는 동일한 테이블의 다른 일반 인덱스 빌드가 동시에 발생할 수 있지만 한 번에 테이블에서 하나의 동시 인덱스 빌드 만 발생할 수 있습니다. 두 경우 모두 테이블의 다른 유형의 스키마 수정은 허용되지 않습니다. 또 다른 차이점은 정기적 인 것입니다스포츠 토토 베트맨 테이블
또는스포츠 토토 베트맨 Index
명령은 트랜잭션 블록 내에서 수행 할 수 있지만스포츠 토토 베트맨 동시에
할 수 없습니다.
장기 거래와 마찬가지로스포츠 토토 베트맨
테이블에서 동시에 제거 할 수있는 튜플에 영향을 줄 수 있습니다진공
다른 테이블에서
스포츠 토토 베트맨 System
지원하지 않음동시에
시스템 카탈로그는 동시에 다시 표시 할 수 없으므로
또한 배제 제약에 대한 인덱스는 동시에 다시 표시 될 수 없습니다. 이 인덱스 가이 명령에서 직접 명명되면 오류가 발생합니다. 제외 구속인 인덱스가있는 테이블 또는 데이터베이스가 동시에 다시 표시되면 해당 인덱스가 건너 뜁니다. (없이 그러한 색인을 다시 알게 될 수 있습니다동시에
옵션.)
각 백엔드 실행스포츠 토토 베트맨
진행 상황을보고합니다PG_STAT_PROGRESS_CREATE_INDEX
보기. 보다섹션 27.4.4자세한 내용.
단일 색인 재건 :
스포츠 토토 베트맨 index my_index;
테이블의 모든 인덱스를 재구성my_table
:
스포츠 토토 베트맨 테이블 my_table;
시스템 색인이 이미 유효하도록 신뢰하지 않고 특정 데이터베이스의 모든 인덱스를 재구성합니다.
$export pgoptions = "-p"
$psql broken_db
... broken_db = 스포츠 토토 베트맨 데이터베이스 broken_db; broken_db = \ q
REINDEXING이 진행중인 동안 관련 관계에 대한 읽기 및 쓰기 작업을 차단하지 않고 테이블의 인덱스 재건축 :
스포츠 토토 베트맨 테이블 동시에 my_broken_table;
없음스포츠 토토 베트맨
SQL 표준의 명령.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면