53.9. 논리적 복제 와이즈 토토 형식#

이 섹션에서는 각 논리적 복제 와이즈 토토의 자세한 형식을 설명합니다. 이러한 와이즈 토토는 복제 슬롯 SQL 인터페이스에 의해 반환되거나 walsender에 의해 전송됩니다. Walsender의 경우 설명된 대로 복제 프로토콜 WAL 와이즈 토토 내에 캡슐화됩니다.PostgreSQL : 문서 : 17 : 53.4. 와이즈 토토 복제 프로토콜, 일반적으로 물리적 복제와 동일한 와이즈 토토 흐름을 따릅니다.

시작 #
바이트1('B')

와이즈 토토를 시작 와이즈 토토로 식별합니다.

Int64 (XLogRecPtr)

트랜잭션의 최종 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 커밋합니다. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32 (거래 ID)

거래의 Xid.

와이즈 토토 #
바이트1('M')

와이즈 토토를 논리적 디코딩 와이즈 토토로 식별합니다.

Int32(거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int8

플래그; 플래그가 없는 경우 0, 논리적 디코딩 와이즈 토토가 트랜잭션인 경우 1입니다.

Int64(XLogRecPtr)

논리적 디코딩 와이즈 토토의 LSN.

문자열

논리적 디코딩 와이즈 토토의 접두사.

Int32

콘텐츠의 길이.

바이트n

논리적 디코딩 와이즈 토토의 내용입니다.

커밋 #
바이트1('C')

와이즈 토토를 커밋 와이즈 토토로 식별합니다.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

커밋의 LSN.

Int64(XLogRecPtr)

트랜잭션의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 커밋합니다. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

원산지 #
바이트1('O')

와이즈 토토를 원본 와이즈 토토로 식별합니다.

Int64 (XLogRecPtr)

원본 서버의 커밋 LSN.

문자열

원산지의 이름.

단일 트랜잭션 내에 여러 개의 Origin 와이즈 토토가 있을 수 있다는 점에 유의하세요.

관계 #
바이트1('R')

와이즈 토토를 관계 와이즈 토토로 식별합니다.

Int32 (거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32(Oid)

관계의 OID.

문자열

네임스페이스(빈 문자열pg_catalog).

문자열

관계 이름.

INT8

관계에 대한 복제 ID 설정(동일상대적inpg_class).

Int16

열의 수.

다음으로, 게시에 포함된 각 열에 대해 다음 와이즈 토토 부분이 나타납니다(생성된 열 제외):

Int8

열에 대한 플래그. 현재 플래그가 없는 경우 0이거나 열을 키의 일부로 표시하는 경우 1일 수 있습니다.

문자열

열의 이름.

Int32 (Oid)

열 데이터 유형의 OID.

Int32

열의 유형 수정자(atttypmod).

유형 #
바이트1('Y')

와이즈 토토를 유형 와이즈 토토로 식별합니다.

Int32(거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32 (Oid)

데이터 유형의 OID.

문자열

네임스페이스(빈 문자열pg_catalog).

문자열

데이터 유형의 이름.

삽입 #
바이트1('나')

와이즈 토토를 삽입 와이즈 토토로 식별합니다.

Int32(거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32 (Oid)

관계 와이즈 토토의 ID에 해당하는 관계의 OID입니다.

바이트1('N')

다음 TupleData 와이즈 토토를 새 튜플로 식별합니다.

튜플데이터

새 튜플의 내용을 나타내는 TupleData 와이즈 토토 부분.

업데이트 #
바이트1('U')

와이즈 토토를 업데이트 와이즈 토토로 식별합니다.

Int32(거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32(Oid)

관계 와이즈 토토의 ID에 해당하는 관계의 OID입니다.

바이트1('K')

다음 TupleData 하위 와이즈 토토를 키로 식별합니다. 이 필드는 선택 사항이며 업데이트로 인해 REPLICA IDENTITY 인덱스의 일부인 열에서 데이터가 변경된 경우에만 존재합니다.

바이트1('O')

다음 TupleData 하위 와이즈 토토를 이전 튜플로 식별합니다. 이 필드는 선택사항이며 업데이트가 발생한 테이블의 REPLICA IDENTITY가 FULL로 설정된 경우에만 존재합니다.

튜플데이터

이전 튜플 또는 기본 키의 내용을 나타내는 TupleData 와이즈 토토 부분. 이전 'O' 또는 'K' 부분이 있는 경우에만 존재합니다.

바이트1('N')

다음 TupleData 와이즈 토토를 새 튜플로 식별합니다.

튜플데이터

새 튜플의 내용을 나타내는 TupleData 와이즈 토토 부분.

업데이트 와이즈 토토에는 'K' 와이즈 토토 부분이나 'O' 와이즈 토토 부분이 포함되거나 둘 다 포함되지 않을 수 있지만 둘 다 포함될 수는 없습니다.

삭제 #
바이트1('D')

삭제 와이즈 토토로 와이즈 토토를 식별합니다.

Int32(거래 ID)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32 (Oid)

관계 와이즈 토토의 ID에 해당하는 관계의 OID입니다.

바이트1('K')

다음 TupleData 하위 와이즈 토토를 키로 식별합니다. 이 필드는 삭제가 발생한 테이블이 REPLICA IDENTITY로 인덱스를 사용하는 경우 존재합니다.

바이트1('O')

다음 TupleData 와이즈 토토를 이전 튜플로 식별합니다. 삭제가 발생한 테이블의 REPLICA IDENTITY가 FULL로 설정된 경우 이 필드가 존재합니다.

튜플데이터

이전 필드에 따라 이전 튜플 또는 기본 키의 내용을 나타내는 TupleData 와이즈 토토 부분.

삭제 와이즈 토토에는 'K' 와이즈 토토 부분이나 'O' 와이즈 토토 부분이 포함될 수 있지만 둘 다 포함될 수는 없습니다.

잘라내기 #
바이트1('T')

와이즈 토토를 잘린 와이즈 토토로 식별합니다.

Int32 (TransactionId)

트랜잭션의 Xid(스트리밍된 트랜잭션에만 존재함). 이 필드는 프로토콜 버전 2부터 사용할 수 있습니다.

Int32

관계 수

Int8

다음에 대한 옵션 비트잘라내기: 1 for캐스케이드, 2 forID 재설정

Int32 (Oid)

관계 와이즈 토토의 ID에 해당하는 관계의 OID입니다. 이 필드는 각 관계에 대해 반복됩니다.

다음 와이즈 토토(스트림 시작, 스트림 중지, 스트림 커밋 및 스트림 중단)는 프로토콜 버전 2부터 사용할 수 있습니다.

스트림 시작 #
바이트1('S')

와이즈 토토를 스트림 시작 와이즈 토토로 식별합니다.

Int32 (거래 ID)

거래의 Xid.

Int8

값 1은 이것이 이 XID에 대한 첫 번째 스트림 세그먼트임을 나타내며, 다른 스트림 세그먼트의 경우 0입니다.

스트림 중지 #
바이트1('E')

와이즈 토토를 스트림 중지 와이즈 토토로 식별합니다.

스트림 커밋 #
바이트1('c')

와이즈 토토를 스트림 커밋 와이즈 토토로 식별합니다.

Int32 (거래 ID)

거래의 Xid.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

커밋의 LSN.

Int64 (XLogRecPtr)

트랜잭션의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 커밋합니다. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

스트림 중단 #
바이트1('A')

와이즈 토토를 스트림 중단 와이즈 토토로 식별합니다.

Int32(거래 ID)

거래의 Xid.

Int32(거래 ID)

하위 트랜잭션의 Xid(최상위 트랜잭션의 트랜잭션 xid와 동일합니다).

Int64(XLogRecPtr)

중단 작업의 LSN은 스트리밍이 병렬로 설정된 경우에만 나타납니다. 이 필드는 프로토콜 버전 4부터 사용할 수 있습니다.

Int64 (TimestampTz)

트랜잭션 중단 타임스탬프. 스트리밍이 병렬로 설정된 경우에만 나타납니다. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다. 이 필드는 프로토콜 버전 4부터 사용할 수 있습니다.

다음 와이즈 토토(준비 시작, 준비, 커밋 준비, 롤백 준비, 스트림 준비)는 프로토콜 버전 3부터 사용할 수 있습니다.

준비 시작 #
바이트1('b')

와이즈 토토를 준비된 트랜잭션 와이즈 토토의 시작으로 식별합니다.

Int64(XLogRecPtr)

준비의 LSN입니다.

Int64 (XLogRecPtr)

준비된 트랜잭션의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 준비하세요. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32 (거래 ID)

거래의 Xid.

문자열

준비된 트랜잭션의 사용자 정의 GID입니다.

준비 #
바이트1('P')

와이즈 토토를 준비된 트랜잭션 와이즈 토토로 식별합니다.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

준비의 LSN입니다.

Int64(XLogRecPtr)

준비된 트랜잭션의 끝 LSN입니다.

Int64(TimestampTz)

트랜잭션의 타임스탬프를 준비하세요. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32(거래 ID)

거래의 Xid.

문자열

준비된 트랜잭션의 사용자 정의 GID입니다.

커밋 준비됨 #
바이트1('K')

와이즈 토토를 준비된 트랜잭션 와이즈 토토의 커밋으로 식별합니다.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

준비된 트랜잭션 커밋의 LSN.

Int64 (XLogRecPtr)

준비된 트랜잭션 커밋의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 커밋합니다. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32 (거래 ID)

거래의 Xid.

문자열

준비된 트랜잭션의 사용자 정의 GID입니다.

롤백 준비됨 #
바이트1('r')

와이즈 토토를 준비된 트랜잭션 와이즈 토토의 롤백으로 식별합니다.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

준비된 트랜잭션의 끝 LSN입니다.

Int64 (XLogRecPtr)

준비된 트랜잭션 롤백의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 준비하세요. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int64 (TimestampTz)

트랜잭션의 롤백 타임스탬프. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32 (거래 ID)

거래의 Xid.

문자열

준비된 트랜잭션의 사용자 정의 GID입니다.

스트림 준비 #
바이트1('p')

와이즈 토토를 스트림 준비 트랜잭션 와이즈 토토로 식별합니다.

Int8(0)

플래그; 현재는 사용하지 않습니다.

Int64 (XLogRecPtr)

준비의 LSN입니다.

Int64 (XLogRecPtr)

준비된 트랜잭션의 끝 LSN입니다.

Int64 (TimestampTz)

트랜잭션의 타임스탬프를 준비하세요. 값은 PostgreSQL epoch(2000-01-01) 이후의 마이크로초 단위입니다.

Int32 (TransactionId)

거래의 Xid.

문자열

준비된 트랜잭션의 사용자 정의 GID입니다.

다음 와이즈 토토 부분은 위 와이즈 토토에 의해 공유됩니다.

튜플데이터 #
Int16

열의 수.

다음으로, 각 열에 대해 다음 하위 와이즈 토토 중 하나가 나타납니다(생성된 열 제외):

바이트1('n')

데이터를 NULL 값으로 식별합니다.

또는

바이트1('u')

변경되지 않은 TOAST 값을 식별합니다(실제 값은 전송되지 않음).

또는

바이트1('t')

데이터를 텍스트 형식의 값으로 식별합니다.

또는

바이트1('b')

데이터를 바이너리 형식의 값으로 식별합니다.

Int32

열 값의 길이.

바이트n

바이너리 또는 텍스트 형식의 열 값. (이전 형식 바이트에 지정된 대로).n위의 길이입니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.