이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : F.1. AMCHECK - 테이블 및 색인 일관성을 토토 핫하는 도구버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.2. amcheck

theAmcheck모듈은 관계 구조의 논리적 일관성을 확인할 수있는 함수를 제공합니다. 구조가 유효한 것으로 보이면 오류가 발생하지 않습니다.

함수가 다양한 기능을 확인합니다불변특정 관계의 표현 구조에서. 인덱스 스캔 및 기타 중요한 작업의 배후에 액세스 방법 기능의 정확성은 항상 보유하고있는 이러한 불변에 의존합니다. 예를 들어, 특정 함수는 무엇보다도 모든 b- 트리 페이지가에 항목이 있는지 확인합니다.논리적ORDER (예 : B- 트리 사설 토토 사이트의 경우텍스트, 인덱스 튜플은 어휘 주문되어 있어야합니다). 특정 불변량이 어떻게 든 유지되지 않으면 영향을받는 페이지의 이진 검색이 색인 스캔을 잘못 안내하여 SQL 쿼리에 대한 답변이 잘못 표시 될 수 있습니다..

검증은 인덱스 스캔 자체와 동일한 절차를 사용하여 수행됩니다.이 절차는 사용자 정의 연산자 클래스 코드 일 수 있습니다. 예를 들어, B-Tree Index Verification은 하나 이상의 B- 트리 지원 기능 1 루틴과 비교하는 데 의존합니다. 보다섹션 38.15.3운영자 클래스 지원 기능의 세부 사항.

Amcheck기능은 슈퍼업자 만 사용할 수 있습니다.

F.2.1. 기능

bt_index_check (사설 토토 사이트 regclass, heapallindexed boolean) 반환 void

bt_index_checkB-Tree 지수 인 Target이 다양한 불변량을 존중하는지 테스트합니다. 예제 사용 :

test =# select bt_index_check (index = c.oid, heapallindexed = i.indisunique),
               c.relname,
               c.relpages
PG_INDEX에서 i
i.indclass [0] = op.oid에서 pg_opclass op에 가입하십시오
op.opcmethod = am.oid에서 pg_am에 가입하십시오
i.indexrelid = C.oid에서 pg_class c에 가입하십시오
c.relnamespace = n.oid에서 pg_namespace n에 가입하십시오
여기서 am.amname = 'btree'및 n.nspname = 'pg_catalog'
- 다른 세션에서 온 임시 테이블을 확인하지 마십시오.
그리고 c.relpersistence! = 't'
- 기능이 생략되면 오류가 발생할 수 있습니다.
그리고 c.relkind = 'i'및 i.indisready 및 i.indisvalid
c.relpages desc Limit 10에 의한 주문;
 bt_index_check |             Relname | 재선 
----------------+---------------------------------------------
                | pg_depend_reference_index |       43
                | pg_depend_depender_index |       40
                | pg_proc_proname_args_nsp_index |       31
                | pg_description_o_c_o_index |       21
                | pg_attribute_relid_attnam_index |       14
                | pg_proc_oid_index |       10
                | pg_attribute_relid_attnum_index |        9
                | pg_amproc_fam_proc_index |        5
                | pg_amop_op_fam_index |        5
                | pg_amop_fam_strat_index |        5
(10 줄)

이 예제는 데이터베이스에서 10 개의 가장 큰 카탈로그 사설 토토 사이트 검증을 수행하는 세션을 보여줍니다테스트. 인덱스 튜플로서 힙 튜플의 존재를 검증하는 것은 고유 인덱스 인 서브 세트에 요청된다. 오류가 발생하지 않기 때문에 테스트 된 모든 인덱스는 논리적으로 일관된 것으로 보입니다. 당연히이 쿼리는 쉽게 전화를 걸 수 있습니다bt_index_check확인이 지원되는 데이터베이스의 모든 색인에 대해.

bt_index_check인수accesssharelock대상 지수와 그에 속하는 힙 관계에서. 이 잠금 모드는 단순한 관계에서 획득 한 동일한 잠금 모드입니다select진술.bt_index_check아동/학부모 관계에 걸친 불변량을 확인하지는 않지만 모든 힙 튜플의 존재를 색인 내 인덱스 튜플로 확인할 때HeaPallIndexedistrue. 살아있는 생산 환경에서 일상적이고 가벼운 부패 테스트가 필요할 때bt_index_check종종 검증의 철저 함과 응용 프로그램 성능 및 가용성에 미치는 영향을 제한하는 것 사이의 최상의 트레이드 오프를 제공합니다.

bt_index_parent_check (사설 토토 사이트 regclass, heapallindexed boolean) 반환 void

bt_index_parent_checkB-Tree 지수 인 대상이 다양한 불변량을 존중하는지 테스트합니다. 선택적으로HeaPallIndexed인수는true, 함수는 인덱스 내에서 찾을 수있는 모든 힙 튜플의 존재를 확인하고 인덱스 구조에 다운 링크가 누락되지 않음을 확인합니다. 수행 할 수있는 수표bt_index_parent_check|bt_index_check. bt_index_parent_check더 철저한 변형으로 생각할 수 있습니다bt_index_check:와 달리bt_index_check, bt_index_parent_check부모/자녀 관계에 걸친 불변량도 확인합니다.bt_index_parent_check논리적 불일치 또는 기타 문제를 발견하면 오류를 제기하는 일반적인 협약을 따릅니다.

aSharelock대상 색인에서에 필요합니다bt_index_parent_check(aSharelock힙 관계에서도 인수되었습니다). 이 잠금은 동시 데이터 수정을 방지합니다삽입, 업데이트삭제명령. 자물쇠는 또한 기본 관계가 동시에 처리되는 것을 방지합니다.진공및 기타 모든 유틸리티 명령. 함수는 전체 트랜잭션이 아닌 실행 중에만 잠금을 유지합니다.

bt_index_parent_check의 추가 검증은 다양한 병리학 적 사례를 감지 할 가능성이 더 높습니다. 이러한 경우에는 기본 B-Tree Index Access Method Code에서 확인 된 인덱스 또는 가설 적으로 발견되지 않은 버그가 사용되는 잘못 구현 된 B- 트리 연산자 클래스가 포함될 수 있습니다. 참고bt_index_parent_checkhot stedby 모드가 활성화 될 때 (즉, 읽기 전용 물리 복제본에서)bt_index_check.

F.2.2. 선택 과목HeaPallIndexed확인

언제HeaPallIndexed검증 기능에 대한 인수는true, 대상 사설 토토 사이트 관계와 관련된 표에 대해 추가 검증 단계가 수행됩니다. 이것은 A로 구성됩니다.더미 색인 생성작동-임시 내내 요약 구조에 대한 모든 가상의 새로운 인덱스 튜플이 있는지 확인합니다 (이것은 기본 첫 번째 검증 단계에서 필요할 때 구축됩니다). 요약 구조지문대상 지수 내에서 발견되는 모든 튜플. 높은 수준의 원칙HeaPallIndexed검증은 기존 대상 사설 토토 사이트와 동등한 새로운 사설 토토 사이트에 기존 구조에서 찾을 수있는 항목 만 있어야한다는 것입니다.

추가HeaPallIndexed위상은 상당한 오버 헤드를 추가합니다. 확인은 일반적으로 여러 배 더 오래 걸립니다. 그러나 획득 한 관계 수준의 자물쇠에는 변화가 없습니다.HeaPallIndexed확인이 수행됩니다.

요약 구조는 크기가 크기로 바인딩maintenance_work_mem. 사설 토토 사이트에 표시되어야하는 각 힙 튜플에 대한 불일치를 감지하지 못할 확률이 2% 이하가되기 위해서는 튜플 당 약 2 바이트의 메모리가 필요합니다. 튜플 당 메모리가 적을수록, 불일치가 누락 될 확률은 천천히 증가합니다. 이 접근법은 검증의 오버 헤드를 크게 제한하는 반면, 특히 검증이 일상적인 유지 보수 작업으로 취급되는 설치의 경우 문제를 감지 할 확률을 약간 줄입니다. 단일 결석 또는 기형 튜플은 각각의 새로운 검증 시도로 감지 될 새로운 기회가 있습니다.

F.2.3. 사용Amcheck효과적으로

Amcheck데이터 페이지 체크섬항상 잡히지 못할 것입니다. 여기에는 다음이 포함됩니다 :

  • 잘못된 운영자 클래스 구현으로 인한 구조적 불일치.

    여기에는 운영 체제 콜라이트 변경의 비교 규칙으로 인한 문제가 포함됩니다. Collatable 유형의 데이텀 비교텍스트는 불변이어야합니다 (B-Tree Index 스캔에 사용 된 모든 비교는 불변이어야하는 것처럼), 이는 운영 체제 콜레이션 규칙이 절대 변경되지 않아야 함을 의미합니다. 드물지만 운영 체제 콜려 규칙에 대한 업데이트로 인해 이러한 문제가 발생할 수 있습니다. 보다 일반적으로, 마스터 서버와 대기 서버 간의 콜레이션 순서의 불일치는 관련이 있습니다.전공사용중인 운영 체제 버전은 일관성이 없습니다. 이러한 불일치는 일반적으로 대기 서버에서만 발생하므로 일반적으로 대기 서버에서만 감지 될 수 있습니다.

    이와 같은 문제가 발생하면 영향을받는 콜레이션을 사용하여 주문한 각 개별 색인에 영향을 미치지 않을 수 있습니다.색인값은 행동 불일치에 관계없이 동일한 절대 순서를 가질 수 있습니다. 보다PostgreSQL : 문서 : 11 : 23.1. 토토 결과 지원andPostgreSQL : 문서 : 11 : 23.2. 윈 토토 Support방법에 대한 자세한 내용은PostgreSQL운영 체제 지역 및 콜라주 사용.

  • 색인화 된 인덱스와 힙 관계 간의 구조적 불일치 (HeaPallIndexed확인이 수행되었습니다).

    정상 작동 중 힙 관계에 대한 사설 토토 사이트의 교차 점검은 없습니다. 힙 부패의 증상은 미묘 할 수 있습니다.

  • 기본에서 가상의 발견되지 않은 버그로 인한 부패PostgreSQL액세스 방법 코드, 정렬 코드 또는 트랜잭션 관리 코드

    인덱스의 구조적 무결성에 대한 자동 검증은 신규 또는 제안 된 일반적인 테스트에서 중요한 역할을합니다PostgreSQL논리적 불일치를 도입 할 수있는 기능을 도입 할 수있는 기능. 테이블 구조 및 관련 가시성 및 거래 상태 정보의 검증도 비슷한 역할을합니다. 명백한 테스트 전략 중 하나는 전화하는 것입니다Amcheck표준 회귀 테스트를 실행할 때 지속적으로 기능합니다. 보다PostgreSQL : 문서 : 11 : 33.1. 시험 배트맨 토토테스트 실행에 대한 자세한 내용.

  • 파일 시스템 또는 스토리지 서브 시스템 결함이 단순히 활성화되지 않는 경우.

    참고Amcheck블록에 액세스 할 때 공유 버퍼 히트 만있는 경우 검증시 공유 메모리 버퍼에 표시된 페이지를 검사합니다. 따라서,Amcheck확인 시점에 파일 시스템에서 읽은 데이터를 반드시 검토 할 필요는 없습니다. 체크섬이 활성화 될 때Amcheck손상된 블록이 버퍼에 읽히면 체크섬 고장으로 인해 오류가 발생할 수 있습니다.

  • 결함이있는 RAM 또는 더 넓은 메모리 서브 시스템으로 인한 손상.

    postgresql수정 가능한 메모리 오류로부터 보호하지 않으며 산업 표준 오류 수정 코드 (ECC) 또는 더 나은 보호를 사용하는 RAM을 사용하여 작동한다고 가정합니다. 그러나 ECC 메모리는 일반적으로 단일 비트 오류에 대해서만 면역되며 제공하는 것으로 가정해서는 안됩니다절대메모리 부패를 초래하는 고장에 대한 보호.

    언제HeaPallIndexed검증이 수행되고, 엄격한 이진 평등이 테스트되고 힙 내 인덱스 속성이 테스트되기 때문에 일반적으로 단일 비트 오류를 ​​감지 할 가능성이 크게 증가합니다..

일반적으로Amcheck부패의 존재 만 증명할 수 있습니다. 부재를 증명할 수 없습니다.

F.2.4. 부패 수리

부패에 관한 오류 없음Amcheck거짓 긍정적이어야합니다.Amcheck정의에 따라 절대로 일어나지 말아야 할 조건의 경우 오류를 제기하고에 대한 신중한 분석Amcheck오류가 종종 필요합니다.

문제를 수리하는 일반적인 방법은 없습니다Amcheck감지. 변하지 않는 위반의 근본 원인에 대한 설명을 찾아야합니다.토토 사이트 4(894부패 진단에 유용한 역할을 할 수 있습니다.Amcheck감지. 에이Reindex부패 수리에 효과적이지 않을 수 있습니다.