이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 메이저 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

와이즈 토토

이름

NOTIFY -- 와이즈 토토 생성

시놉시스

와이즈 토토채널 [ , 페이로드 ]

설명

와이즈 토토명령은 다음을 보냅니다. 선택 사항과 함께 와이즈 토토 이벤트"페이로드"문자열을 각 클라이언트 응용프로그램에 이전에 실행됨듣기채널지정된 채널 이름에 대해 현재 데이터베이스에 있습니다.

와이즈 토토간단한 상호 프로세스 제공 액세스하는 프로세스 모음을 위한 통신 메커니즘 같은포스트그레SQL데이터베이스. 에이 페이로드 문자열은 와이즈 토토과 함께 전송될 수 있습니다. 구조화된 데이터를 전달하기 위한 더 높은 수준의 메커니즘을 구축할 수 있습니다. 데이터베이스의 테이블을 사용하여 추가 데이터를 전달합니다. 청취자에게 알리는 사람입니다.

와이즈 토토 이벤트를 위해 클라이언트에 전달된 정보 와이즈 토토 채널 이름, 와이즈 토토 세션의 이름이 포함됩니다. 서버 프로세스PID, 그리고 페이로드 문자열(페이로드 문자열이 없으면 빈 문자열임) 지정되었습니다.

채널 이름을 정의하는 것은 데이터베이스 디자이너의 몫입니다 이는 주어진 데이터베이스에서 사용될 것이며 각각의 의미입니다. 일반적으로 채널 이름은 일부 테이블의 이름과 동일합니다. 데이터베이스에서 와이즈 토토 이벤트는 본질적으로 다음을 의미합니다."나는 이 테이블을 변경했습니다. 한번 살펴보세요 새로운 소식을 확인하세요.". 그러나 그러한 협회는 다음과 같이 시행되지 않습니다.와이즈 토토그리고듣기명령. 예를 들어, 데이터베이스 디자이너 여러 다른 채널 이름을 사용하여 서로 다른 신호를 보낼 수 있습니다. 단일 테이블에 대한 일종의 변경 사항입니다. 또는 페이로드 문자열을 사용하여 다양한 경우를 구별할 수 있습니다.

언제와이즈 토토신호를 보내는 데 사용됩니다. 특정 테이블에 대한 변경 발생, 유용한 프로그래밍 기술은 다음을 넣는 것입니다.와이즈 토토규칙에서 이는 테이블 업데이트에 의해 트리거됩니다. 이로써 와이즈 토토 테이블이 변경되면 자동으로 발생하며 애플리케이션 프로그래머는 실수로 이를 잊어버릴 수 없습니다.

와이즈 토토SQL과 상호작용 몇 가지 중요한 방식으로 거래합니다. 첫째, 만일 a와이즈 토토트랜잭션 내에서 실행되며, 와이즈 토토 이벤트는 거래가 완료될 때까지 전달되지 않습니다. 헌신적이다. 거래가 다음과 같으므로 이는 적절합니다. 중단되었습니다. 포함된 모든 명령은 효과가 없습니다.와이즈 토토. 하지만 다음과 같은 경우 당황스러울 수 있습니다. 하나는 와이즈 토토 이벤트가 전달될 것으로 예상됩니다. 즉시. 둘째, 청취 세션이 거래가 진행되는 동안 와이즈 토토 신호 와이즈 토토 이벤트는 연결된 클라이언트로 전달되지 않습니다. 트랜잭션이 완료된 직후까지(커밋되거나 또는 중단됨). 다시 말하지만, 와이즈 토토이 다음과 같은 경우에는 추론이 가능합니다. 나중에 중단된 트랜잭션 내에서 전달된 경우 어떻게든 와이즈 토토을 취소하고 싶지만 서버는 할 수 없다"철회"와이즈 토토 한 번 클라이언트에게 보냈습니다. 따라서 와이즈 토토 이벤트는 거래 간에 전달됩니다. 이것의 결론은 이러하다. 사용하는 애플리케이션와이즈 토토실시간용 신호는 거래를 짧게 유지하도록 노력해야 합니다.

동일한 채널 이름이 여러 번 신호를 받는 경우 동일한 페이로드 문자열을 가진 동일한 트랜잭션, 데이터베이스 서버는 단일 와이즈 토토만 전달하기로 결정할 수 있습니다. 에 반면, 고유한 페이로드 문자열이 있는 와이즈 토토은 항상 별개의 와이즈 토토으로 전달됩니다. 마찬가지로, 다른 거래의 와이즈 토토은 절대로 접히지 않습니다. 하나의 와이즈 토토으로. 나중에 인스턴스를 삭제하는 것을 제외하고 중복 와이즈 토토,와이즈 토토동일한 거래의 와이즈 토토이 수신되도록 보장합니다. 보낸 순서대로 배달되었습니다. 또한 다양한 트랜잭션의 메시지가 순서대로 전달됩니다. 트랜잭션이 커밋되었습니다.

실행하는 클라이언트에 일반적입니다와이즈 토토동일한 와이즈 토토을 듣고 있습니다 채널 자체. 이 경우 와이즈 토토이 다시 전송됩니다. 이벤트는 다른 모든 청취 세션과 마찬가지로 에 따라 애플리케이션 로직으로 인해 쓸모없는 작업이 발생할 수 있습니다. 예를 들어 데이터베이스 테이블을 읽어서 동일한 업데이트를 찾습니다. 그 세션이 방금 작성되었습니다. 이런 추가 피해는 가능해요 와이즈 토토 세션의 서버 프로세스 여부를 확인하여 작업PID(다음에서 제공됨) 와이즈 토토 이벤트 메시지)는 자신의 세션과 동일PID(다음에서 사용 가능libpq). 그들이 동일할 때, 와이즈 토토 이벤트는 자신의 작업이 다시 반송되는 것이며 무시당해라.

매개변수

채널

신호를 받을 와이즈 토토 채널의 이름(모든 식별자).

페이로드

"페이로드"문자열 와이즈 토토과 함께 전달되었습니다. 이것은 단순 문자열 리터럴로 지정됩니다. 기본적으로 구성에서는 8000바이트보다 짧아야 합니다. (만약 바이너리 데이터나 많은 양의 정보가 필요합니다. 전달되면 데이터베이스 테이블에 저장하는 것이 가장 좋습니다. 레코드의 키를 보냅니다.)

참고

보낸 와이즈 토토을 보관하는 대기열이 있습니다. 하지만 아직 모든 청취 세션에서 처리되지는 않았습니다. 만약 이 큐 가득 차서 트랜잭션 호출와이즈 토토커밋 시 실패합니다. 대기열이 꽤 있어요 크기가 크며(표준 설치 시 8GB) 충분해야 합니다. 거의 모든 사용 사례에 적합한 크기입니다. 그러나 정리 작업은 수행할 수 없습니다. 세션이 실행되면 배치듣기그리고 그런 다음 매우 오랜 시간 동안 거래를 시작합니다. 일단 큐는 절반 정도 차면 로그 파일에 다음을 가리키는 경고가 표시됩니다. 정리를 방해하는 세션입니다. 이 경우에는 다음을 수행해야 합니다. 이 세션이 현재 트랜잭션을 종료하는지 확인하십시오. 정리가 진행될 수 있습니다.

실행된 트랜잭션와이즈 토토2단계를 준비할 수 없습니다. 커밋합니다.

pg_와이즈 토토

와이즈 토토을 보내려면 다음 기능을 사용할 수도 있습니다.pg_와이즈 토토(텍스트, 텍스트). 이 함수는 채널 이름을 첫 번째 인수로, 페이로드를 두 번째. 이 함수는보다 사용하기가 훨씬 쉽습니다.와이즈 토토작업이 필요한 경우 명령 상수가 아닌 채널 이름 및 페이로드.

다음에서 수신/와이즈 토토 시퀀스 구성 및 실행psql:

가상 듣기;
가상으로 와이즈 토토;
PID 8448을 사용하는 서버 프로세스로부터 비동기 와이즈 토토 "가상"이 수신되었습니다.
NOTIFY virtual, '이것이 페이로드입니다';
PID 8448을 사용하는 서버 프로세스에서 수신된 페이로드 "이것은 페이로드입니다"가 있는 비동기 와이즈 토토 "가상"입니다.

들어봐 foo;
SELECT pg_와이즈 토토('fo' || 'o', '지불' || '로드');
PID 14728을 사용하는 서버 프로세스에서 수신된 페이로드 'payload'가 포함된 비동기 와이즈 토토 'foo'.

호환성

없습니다와이즈 토토문의 SQL 표준.