그pg_무지개 토토inspect모듈은 실행 중인 작업의 미리 쓰기 로그 내용을 검사할 수 있는 SQL 함수를 제공합니다.포스트그레SQL디버깅, 분석, 보고 또는 교육 목적에 유용한 낮은 수준의 데이터베이스 클러스터입니다. 와 비슷합니다.pg_무지개 토토dump, 그러나 별도의 유틸리티가 아닌 SQL을 통해 액세스할 수 있습니다.
이 모듈의 모든 기능은 서버의 현재 타임라인 ID를 사용하여 WAL 정보를 제공합니다.
그pg_무지개 토토inspect함수는 관심 있는 알려진 무지개 토토 레코드의 위치를 지정하는 LSN 인수를 사용하여 호출되는 경우가 많습니다.시작. 그러나 다음과 같은 일부 기능은pg_logical_emit_message, LSN을 반환이후방금 삽입된 레코드입니다.
모두pg_무지개 토토inspect특정 LSN 범위에 속하는 레코드에 대한 정보를 표시하는 함수는 수락이 허용됩니다.end_lsn서버의 현재 LSN 뒤에 오는 인수. 를 사용하여end_lsn “미래에서”오류가 발생하지 않습니다.
값을 제공하는 것이 편리할 수 있습니다.FFFFFFFF/FFFFFFFF(최대 유효값pg_lsn값)을로end_lsn인수. 이는 다음을 제공하는 것과 동일합니다.end_lsn서버의 현재 LSN과 일치하는 인수.
기본적으로 이 기능의 사용은 수퍼유저와 회원으로 제한됩니다.pg_read_server_files역할. 다음을 사용하여 슈퍼유저가 다른 사람에게 액세스 권한을 부여할 수 있습니다.부여.
pg_get_wal_record_info(in_lsn pg_lsn)가 레코드를 반환합니다. #다음 위치 또는 그 이후에 있는 레코드에 대한 WAL 레코드 정보를 가져옵니다.in_lsn인수. 예를 들면:
postgres=# SELECT * FROM pg_get_wal_record_info('0/E419E28');
-[ 기록 1 ]------+--------------------------------------
시작_lsn | 0/E419E28
end_lsn | 0/E419E68
prev_lsn | 0/E419D78
시드 | 0
자원 관리자 | 힙2
레코드 유형 | 진공
레코드 길이 | 58
메인_데이터_길이 | 2
fpi_길이 | 0
설명 | 사용되지 않음: 5, 사용되지 않음: [1, 2, 3, 4, 5]
블록 참조 | blkref #0: rel 1663/16385/1249 포크 메인 blk 364
만약in_lsn이 WAL 레코드의 시작 부분에 있지 않으면 다음 유효한 WAL 레코드에 대한 정보가 대신 표시됩니다. 다음으로 유효한 WAL 레코드가 없으면 함수에서 오류가 발생합니다.
pg_get_무지개 토토_records_info(start_lsn pg_lsn, end_lsn pg_lsn)는 레코드 세트를 반환합니다. #다음 사이에 유효한 모든 WAL 레코드의 정보를 가져옵니다.start_lsn그리고end_lsn. 무지개 토토 레코드당 하나의 행을 반환합니다. 예를 들면:
postgres=# SELECT * FROM pg_get_무지개 토토_records_info('0/1E913618', '0/1E913740') LIMIT 1;
-[ 기록 1 ]----+--------------------------------------------------
시작_lsn | 0/1E913618
end_lsn | 0/1E913650
prev_lsn | 0/1E9135A0
시드 | 0
자원 관리자 | 대기
레코드 유형 | RUNNING_XACTS
레코드 길이 | 50
메인_데이터_길이 | 24
fpi_길이 | 0
설명 | 다음Xid 33775 최신완료Xid 33774 가장 오래된RunningXid 33775
블록 참조 |
다음 경우에 함수에서 오류가 발생합니다.start_lsn사용할 수 없습니다.
pg_get_무지개 토토_block_info(start_lsn pg_lsn, end_lsn pg_lsn, show_data boolean DEFAULT true)는 레코드 세트를 반환합니다. #사이의 모든 유효한 WAL 레코드에서 각 블록 참조에 대한 정보를 얻습니다.start_lsn그리고end_lsn하나 이상의 블록 참조 포함. 무지개 토토 레코드당 블록 참조당 하나의 행을 반환합니다. 예를 들면:
postgres=# SELECT * FROM pg_get_무지개 토토_block_info('0/1230278', '0/12302B8');
-[ 기록 1 ]------+----------------------
시작_lsn | 0/1230278
end_lsn | 0/12302B8
prev_lsn | 0/122FD40
블록ID | 0
렐테이블스페이스 | 1663년
관계 데이터베이스 | 1
relfilenode | 2658
렐포크번호 | 0
relblock번호 | 11
시드 | 341
자원 관리자 | 비트리
레코드 유형 | INSERT_LEAF
레코드 길이 | 64
메인_데이터_길이 | 2
블록_데이터_길이 | 16
block_fpi_length | 0
block_fpi_info |
설명 | 끄기: 46
블록 데이터 | \x00002a00070010402630000070696400
block_fpi_data |
이 예는 하나의 블록 참조만 포함하는 WAL 레코드와 관련되어 있지만 많은 WAL 레코드에는 여러 블록 참조가 포함되어 있습니다. 다음으로 출력된 행pg_get_무지개 토토_block_info다음의 고유한 조합이 보장됩니다.start_lsn그리고block_id값.
여기 표시된 정보의 대부분은 다음 출력과 일치합니다.pg_get_무지개 토토_records_info13951_14001pg_get_무지개 토토_block_info블록 참조당 하나의 행을 출력하여 각 WAL 레코드의 정보를 확장된 형식으로 중첩 해제하므로 특정 세부정보는 전체 레코드 수준이 아닌 블록 참조 수준에서 추적됩니다. 이 구조는 시간이 지남에 따라 개별 블록이 어떻게 변경되었는지 추적하는 쿼리에 유용합니다. 블록 참조가 없는 레코드(예:커밋무지개 토토 레코드)에는 반환된 행이 없으므로pg_get_무지개 토토_block_info실제로 돌아올 수도 있음더 적게행보다pg_get_무지개 토토_records_info.
그reltablespace, reldatabase및relfilenode매개변수 참조pg_tablespace.oid, pg_database.oid및pg_class.relfilenode각각.relforknumber필드는 블록 참조 관계 내의 포크 번호입니다. 참조common/relpath.h자세한 내용은.
그pg_filenode_relation함수(참조표 9.97)은 원래 실행 중에 어떤 관계가 수정되었는지 확인하는 데 도움이 될 수 있습니다.
클라이언트가 블록 데이터를 구체화하는 오버헤드를 피하는 것이 가능합니다. 이렇게 하면 함수 실행 속도가 훨씬 빨라질 수 있습니다. 언제쇼_데이터다음으로 설정됨거짓, 블록_데이터그리고block_fpi_data값이 생략되었습니다(즉,블록_데이터그리고block_fpi_data 아웃인수는NULL반환된 모든 행에 대해). 분명히 이 최적화는 블록 데이터가 실제로 필요하지 않은 쿼리에서만 가능합니다.
다음 경우에 함수에서 오류가 발생합니다.start_lsn사용할 수 없습니다.
pg_get_wal_stats(start_lsn pg_lsn, end_lsn pg_lsn, per_record boolean DEFAULT false)는 레코드 세트를 반환합니다. #다음 사이에 유효한 모든 WAL 레코드의 통계를 가져옵니다.start_lsn그리고end_lsn. 기본적으로 각 행당 하나의 행을 반환합니다.resource_manager유형. 언제레코드당다음으로 설정됨참, 각 행당 하나의 행을 반환합니다.record_type. 예를 들면:
postgres=# SELECT * FROM pg_get_wal_stats('0/1E847D00', '0/1E84F500')
개수 0 AND
"resource_manager/record_type" = '거래'
제한 1;
-[ 기록 1 ]---+-------------------
자원 관리자/기록_유형 | 거래
카운트 | 2
개수_백분율 | 8
레코드 크기 | 875
기록_크기_백분율 | 41.23468426013195
fpi_크기 | 0
fpi_size_percentage | 0
결합_크기 | 875
결합_크기_백분율 | 2.8634072910530795
다음 경우에 함수에서 오류가 발생합니다.start_lsn사용할 수 없습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.