2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타
이 문서는 지원되지 않는 버전의 윈 토토 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 윈 토토PostgreSQL : 문서 : 17 : F.1. AMCHECK - 테이블 및 색인 일관성을 토토 핫하는버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.2. amcheck

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

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

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

Amcheck기능은 슈퍼업자 만 사용할 수 윈 토토.

F.2.1. 기능

bt_index_check (인덱스 regclass) 반환 void

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

test =# bt_index_check (c.oid), 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'
- 기능이 생략되면 오류가 발생할 수 있습니다.
그리고 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아동/학부모 관계에 걸친 불일치를 확인하지 않으며 대상 지수가 힙 관계와 일치하는지 확인하지도 않습니다. 살아있는 생산 환경에서 일상적이고 가벼운 부패 테스트가 필요할 때bt_index_check종종 검증의 철저 함과 응용 프로그램 성능 및 가용성에 미치는 영향을 제한하는 것 사이의 최상의 트레이드 오프를 제공합니다.

bt_index_parent_check (인덱스 regclass) 반환 void

bt_index_parent_checkB-Tree 지수 인 대상이 다양한 불변성을 존중하는지 테스트합니다. 에 의해 수행 된 수표bt_index_parent_checkbt_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. 사용Amcheck효과적으로

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

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

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

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

  • 기본에서 가상의 발견되지 않은 버그로 인한 부패윈 토토액세스 방법 코드 또는 정렬 코드.

    인덱스의 구조적 무결성에 대한 자동 검증은 신규 또는 제안 된 일반적인 테스트에서 중요한 역할을합니다윈 토토논리적 불일치가 도입 될 수있는 특징. 명백한 테스트 전략 중 하나는 전화하는 것입니다Amcheck표준 회귀 테스트를 실행할 때 지속적으로 기능합니다. 보다PostgreSQL : 문서 : 10 : 32.1. 시험 토토 사이트테스트 실행에 대한 자세한 내용.

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

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

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

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

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

F.2.3. 부패 수리

부패에 관한 오류 없음Amcheck거짓 긍정적이어야합니다. 실제로,Amcheck하드웨어 문제보다 소프트웨어 버그를 찾을 가능성이 더 높습니다.Amcheck정의에 따라 절대로 일어나지 말아야 할 조건의 경우 오류를 제기하고에 대한 신중한 분석Amcheck오류가 종종 필요합니다.

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