이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : F.32. PG_SURGERY-관계 윈 토토 대한 저수준 수술 수행버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.34. PG_SURGERY-관계 롤 토토 대한 저수준 수술 수행#

thepg_surgery모듈은 손상된 관계에 대한 수술을 수행하는 다양한 기능을 제공합니다. 이러한 기능은 설계에 의해 안전하지 않으며이를 사용하면 롤 토토베이스가 손상되거나 추가로 손상 될 수 있습니다. 예를 들어, 이러한 기능은 자체 인덱스와 테이블을 일치하지 않도록하기 위해 쉽게 사용될 수 있습니다.고유 한또는외국 키제약 위반 또는 읽기시 데이터베이스 서버 충돌을 일으키는 튜플을 보이게합니다. 그들은 최후의 수단으로만주의를 기울여야합니다.

F.34.1. 기능#

heap_force_kill (regclass, tid []) 반환 void

heap_force_killMarks중고줄 포인터 as죽은튜플을 검사하지 않고. 이 기능의 의도 된 사용은 접근 할 수없는 튜플을 강제로 제거하는 것입니다. 예를 들어:

test = select *에서 ctid = '(0, 1)';
오류 : 트랜잭션 4007513275의 상태에 액세스 할 수 없습니다
세부 사항 : "PG_XACT/0EED"파일을 열 수 없습니다. 그러한 파일이나 디렉토리는 없습니다.

test =# 선택 heap_force_kill ( 't1':: regclass, 배열 [ '(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을 찾았습니다
컨텍스트 : 관계의 블록 0을 스캔하는 동안 "public.t1"

test =# t1에서 ctid를 선택하십시오. 여기서 xmin = 507;
 CTID
-------
 (0,3)
(1 줄)

test =# 선택 heap_force_freeze ( 't1':: regclass, 배열 [ '(0, 3)'] :: tid []);
 heap_force_freeze
--------------------

(1 줄)

test =# t1에서 ctid를 선택하십시오. 여기서 xmin = 2;
 CTID
-------
 (0,3)
(1 행)

F.34.2. 저자#

Ashutosh Sharma