이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

토토 베이주세요

토토 베이 — 목표를 기다림LSN재생, 선택적으로 시간 초과 포함

시놉시스

LSN '을 기다리세요.lsn' [ 와 (옵션 [, ...] ) ]

어디에서옵션다음과 같을 수 있습니다:시간 초과 '시간 초과'
    NO_THROW

설명

복구가 다시 재생될 때까지 기다립니다.lsn. 그렇지 않은 경우시간 초과이 지정되거나 0으로 설정되면 이 명령은lsn. 시간 초과 시 또는 서버가 이전에 승격된 경우lsn도달하면 오류가 발생합니다.NO_THROW은 WITH 절에 지정되어 있습니다. 만일NO_THROW이 지정되면 명령에서 오류가 발생하지 않습니다.

가능한 반환 값은 다음과 같습니다.성공, 시간 초과복구 중이 아님.

매개변수

lsn

대상을 지정합니다LSN기다립니다.

함께 (옵션 [, ...] )

이 절은 대기 작업에 대한 선택적 매개변수를 지정합니다. 다음 매개변수가 지원됩니다.

시간 초과 '시간 초과'

지정된 경우 및시간 초과이 0보다 크면 명령은 다음까지 기다립니다.lsn도달했거나 지정된시간 초과경과되었습니다.

시간 초과은 밀리초 단위의 정수로 제공될 수 있습니다. 또한 밀리초 단위의 정수 또는 단위가 있는 숫자로 문자열 리터럴로 제공될 수도 있습니다(참조)섹션 19.1.1).

NO_THROW

시간 초과 또는 기본에서 실행 중인 경우 오류를 발생시키지 않도록 지정하십시오. 이 경우 결과 상태는 반환 값에서 가져올 수 있습니다.

출력

성공

이 반환 값은 우리가 목표에 성공적으로 도달했음을 나타냅니다.lsn.

시간 초과

이 반환 값은 목표에 도달하기 전에 시간 초과가 발생했음을 나타냅니다.lsn.

복구 중이 아님

이 반환 값은 데이터베이스 서버가 복구 상태에 있지 않음을 나타냅니다. 이는 명령을 수신하는 시점에 데이터베이스 서버가 복구 중이 아니었거나 대상에 도달하기 전에 승격되었음을 의미할 수 있습니다.lsn.

참고

토토 베이주세요명령은 다음까지 기다립니다.lsn대기 중에 재생됩니다. 즉, 이 명령을 실행한 후에서 반환되는 값은 다음과 같습니다.pg_last_wal_replay_lsn다음보다 크거나 같아야 합니다.lsn값. 이는 읽기에는 비동기 복제본을 사용하고 쓰기에는 기본 복제본을 사용하면서 쓰기 읽기 일관성을 달성하는 데 유용합니다. 이 경우,lsn마지막 수정 사항은 클라이언트 애플리케이션 측 또는 연결 풀러 측에 저장되어야 합니다.

토토 베이주세요명령은 대기 중에 호출되어야 합니다. 사용자가 실행하는 경우토토 베이주세요기본에서는 다음을 제외하면 오류가 발생합니다.NO_THROW은 WITH 절에 지정되어 있습니다. 그러나 만일토토 베이주세요대기에서 승격된 기본에서 호출되며lsn이미 재생되었으므로토토 베이주세요명령은 즉시 종료됩니다.

당신은 사용할 수 있습니다토토 베이주세요기다리는 명령pg_lsn값. 예를 들어 애플리케이션은 다음을 업데이트할 수 있습니다.영화테이블을 가져오고lsn방금 변경 후. 이 예에서는pg_current_wal_insert_lsn주 서버에서lsn그렇다면동기_커밋다음으로 설정될 수 있음꺼짐.

postgres=# 업데이트 영화 SET 장르 = '드라마틱' WHERE 장르 = '드라마';
업데이트 100
postgres=# SELECT pg_current_wal_insert_lsn();
pg_current_wal_insert_lsn
-------
0/306EE20
(1행)

그러면 응용프로그램이 실행될 수 있습니다토토 베이주세요와 함께lsn기본에서 얻었습니다. 그 후에는 기본에서 변경된 사항이 복제본에서 표시되도록 보장되어야 합니다.

postgres=# LSN '0/306EE20'을 기다립니다;
 상태
--------
 성공
(1줄)
postgres=# SELECT * FROM 영화 WHERE 장르 = '드라마';
 장르
-------
(0행)

시간 초과 이전에 대상 LSN에 도달하지 않으면 오류가 발생합니다.

postgres=# LSN '0/306EE20' 대기(시간 초과 '0.1초');
오류: 대상 LSN 0/306EE20이 재생되기를 기다리는 동안 시간이 초과되었습니다. 현재 재생 LSN 0/306EA60

같은 예에서는 다음을 사용합니다.토토 베이주세요함께NO_THROW옵션.

postgres=# LSN '0/306EE20' 대기(TIMEOUT '100ms', NO_THROW);
 상태
--------
 시간 초과
(1행)