그pg_surgery모듈은 손상된 관계에 대한 수술을 수행하는 다양한 토토 캔을 제공합니다. 이러한 토토 캔은 설계상 안전하지 않으며 이를 사용하면 데이터베이스가 손상되거나 추가로 손상될 수 있습니다. 예를 들어, 이러한 함수는 테이블이 자체 인덱스와 일치하지 않게 만드는 데 쉽게 사용될 수 있습니다.고유또는외래 키제약 조건 위반, 심지어 읽을 때 데이터베이스 서버 충돌을 일으킬 수 있는 튜플을 표시하기 위한 것입니다. 이는 매우 주의해서 사용해야 하며 최후의 수단으로만 사용해야 합니다.
heap_force_kill(regclass, tid[])가 void를 반환함heap_force_kill마크“사용됨”라인 포인터:“죽음”튜플을 검사하지 않고. 이 함수의 의도된 용도는 다른 방법으로는 액세스할 수 없는 튜플을 강제로 제거하는 것입니다. 예를 들면:
test= ctid = '(0, 1)'인 t1에서 *를 선택합니다.
오류: 트랜잭션 4007513275 상태에 액세스할 수 없습니다.
세부 사항: "pg_xact/0EED" 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다.
test=# select heap_force_kill('t1'::regclass, ARRAY['(0, 1)']::tid[]);
heap_force_kill
-----------------
(1줄)
test=# select * from t1 where ctid = '(0, 1)';
(0행)
heap_force_freeze(regclass, tid[])는 void를 반환함heap_force_freeze튜플 데이터를 검사하지 않고 튜플을 고정된 것으로 표시합니다. 이 함수의 의도된 용도는 손상된 가시성 정보로 인해 액세스할 수 없거나 손상된 가시성 정보로 인해 테이블이 성공적으로 정리되는 것을 방지하는 액세스 가능한 튜플을 만드는 것입니다. 예를 들면:
test= 진공 t1;
오류: relfrozenxid 515 이전에서 xmin 507을 찾았습니다.
CONTEXT: "public.t1" 관계의 블록 0을 스캔하는 동안
test=# xmin = 507인 t1에서 ctid를 선택합니다.
ctid
-------
(0,3)
(1줄)
test=# select heap_force_freeze('t1'::regclass, ARRAY['(0, 3)']::tid[]);
heap_force_freeze
------
(1줄)
test=# xmin = 2인 t1에서 ctid를 선택합니다.
ctid
-------
(0,3)
(1행)
아슈토시 샤르마<ashu.coek88@gmail.com
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.