이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 47.9. 논리적 디코딩을위한 대규모 배트맨 토토 스트리밍버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

47.10. 논리적 디코딩을 위한 대규모 토토 사이트 순위 스트리밍#

기본 출력 플러그인 콜백(예:begin_cb, change_cb, 커밋_cb그리고message_cb)은 토토 사이트 순위이 실제로 커밋될 때만 호출됩니다. 변경 사항은 여전히 ​​토토 사이트 순위 로그에서 디코딩되지만 커밋 시 출력 플러그인에만 전달됩니다(토토 사이트 순위이 중단되면 삭제됩니다).

이는 디코딩이 점진적으로 발생하고 메모리 사용량을 제어하기 위해 디스크로 유출될 수 있지만, 디코딩된 모든 변경 사항은 토토 사이트 순위이 최종적으로 커밋될 때(더 정확하게는 커밋이 토토 사이트 순위 로그에서 디코딩될 때) 전송되어야 함을 의미합니다. 토토 사이트 순위 규모와 네트워크 대역폭에 따라 전송 시간으로 인해 적용 지연이 크게 늘어날 수 있습니다.

대규모 트랜잭션으로 인한 적용 지연을 줄이기 위해 출력 플러그인은 진행 중인 트랜잭션의 증분 스트리밍을 지원하는 추가 콜백을 제공할 수 있습니다. 필수 스트리밍 콜백이 여러 개 있습니다(stream_start_cb, stream_stop_cb, stream_abort_cb, stream_commit_cb그리고stream_change_cb) 및 두 개의 선택적 콜백(stream_message_cb그리고stream_truncate_cb). 또한 2단계 명령 스트리밍을 지원하려면 추가 콜백을 제공해야 합니다. (참조PostgreSQL : 문서 : 개발 : 47.10. 논리적 디코딩에 대한 2 단계 토토 사이트 지원자세한 내용은).

진행 중인 트랜잭션을 스트리밍할 때 변경 사항(및 메시지)은 다음으로 구분된 블록으로 스트리밍됩니다.stream_start_cb그리고stream_stop_cb콜백. 디코딩된 모든 변경 사항이 전송되면 트랜잭션은 다음을 사용하여 커밋될 수 있습니다.stream_commit_cb콜백(또는 다음을 사용하여 중단되었을 수도 있음)stream_abort_cb콜백). 2단계 커밋이 지원되는 경우 다음을 사용하여 트랜잭션을 준비할 수 있습니다.stream_prepare_cb콜백,커밋 준비됨다음을 사용하여commit_prepared_cb콜백 또는 다음을 사용하여 중단됨rollback_prepared_cb.

하나의 트랜잭션에 대한 스트리밍 콜백 호출의 예시 시퀀스는 다음과 같습니다.

stream_start_cb(...);   <-- 변경 사항의 첫 번째 블록 시작
  stream_change_cb(...);
  stream_change_cb(...);
  stream_message_cb(...);
  stream_change_cb(...);
  ...
  stream_change_cb(...);
stream_stop_cb(...);    <-- 첫 번째 변경 블록 끝

stream_start_cb(...);   <-- 두 번째 변경 블록 시작
  stream_change_cb(...);
  stream_change_cb(...);
  stream_change_cb(...);
  ...
  stream_message_cb(...);
  stream_change_cb(...);
stream_stop_cb(...);    <-- 두 번째 변경 블록 끝

[아. 일반 커밋을 사용하는 경우]
stream_commit_cb(...);    <-- 스트리밍된 트랜잭션 커밋

[비. 2단계 커밋을 사용하는 경우]
stream_prepare_cb(...);   <-- 스트리밍 트랜잭션 준비
commit_prepared_cb(...);  <-- 준비된 트랜잭션 커밋

물론 콜백 호출의 실제 순서는 더 복잡할 수 있습니다. 여러 스트리밍 토토 사이트 순위에 대한 차단이 있을 수 있으며 일부 토토 사이트 순위이 중단될 수 있습니다.

디스크로 유출 동작과 유사하게 WAL에서 디코딩된 총 변경 사항(진행 중인 모든 트랜잭션에 대해)이 다음에 정의된 제한을 초과하면 스트리밍이 트리거됩니다.logical_decoding_work_mem설정. 이 시점에서 가장 큰 최상위 트랜잭션(현재 디코딩된 변경 사항에 사용되는 메모리 양으로 측정)이 선택되어 스트리밍됩니다. 그러나 메모리 임계값을 초과했지만 여전히 전체 튜플을 디코딩하지 않았기 때문에 스트리밍이 활성화된 경우에도 여전히 디스크에 유출해야 하는 경우도 있습니다. 예를 들어 디코딩된 TOAST 테이블 삽입만 디코딩하고 기본 테이블 삽입은 그렇지 않습니다.

대규모 토토 사이트 순위을 스트리밍하는 경우에도 변경 사항은 커밋 순서대로 적용되어 비스트리밍 모드와 동일한 보장을 유지합니다.