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

배트맨 토토

이름

NOTIFY -- 배트맨 토토 생성

시놉시스

배트맨 토토채널 [ , 페이로드 ]

설명

배트맨 토토명령은 선택 사항과 함께 배트맨 토토 이벤트를 보냅니다."페이로드"이전에 실행한 각 클라이언트 응용 프로그램에 대한 문자열듣기채널현재 데이터베이스의 지정된 채널 이름에 대해. 배트맨 토토은 모든 사용자에게 표시됩니다.

배트맨 토토동일한 프로세스에 액세스하는 프로세스 모음을 위한 간단한 프로세스 간 통신 메커니즘을 제공합니다.PostgreSQL데이터베이스. 페이로드 문자열은 배트맨 토토과 함께 전송될 수 있으며 구조화된 데이터를 전달하기 위한 더 높은 수준의 메커니즘은 데이터베이스의 테이블을 사용하여 배트맨 토토자에서 리스너로 추가 데이터를 전달함으로써 구축될 수 있습니다.

배트맨 토토 이벤트를 위해 클라이언트에 전달된 정보에는 배트맨 토토 채널 이름, 배트맨 토토 세션의 서버 프로세스가 포함됩니다.PID및 페이로드 문자열. 지정되지 않은 경우 빈 문자열입니다.

주어진 데이터베이스에서 사용될 채널 이름과 각 이름의 의미를 정의하는 것은 데이터베이스 설계자에게 달려 있습니다. 일반적으로 채널 이름은 데이터베이스의 일부 테이블 이름과 동일하며 배트맨 토토 이벤트는 본질적으로 다음을 의미합니다."나는 이 테이블을 변경했습니다. 새로운 것이 무엇인지 살펴보세요". 그러나 그러한 연관성은 다음과 같이 시행되지 않습니다.배트맨 토토그리고듣기명령. 예를 들어, 데이터베이스 디자이너는 여러 다른 채널 이름을 사용하여 단일 테이블에 대한 다양한 종류의 변경 사항을 알릴 수 있습니다. 또는 페이로드 문자열을 사용하여 다양한 사례를 구별할 수 있습니다.

언제배트맨 토토은 특정 테이블에 대한 변경 발생을 알리는 데 사용됩니다. 유용한 프로그래밍 기술은 다음과 같습니다.배트맨 토토테이블 업데이트에 의해 트리거되는 명령문 트리거에서. 이런 방식으로 테이블이 변경되면 배트맨 토토이 자동으로 발생하며 애플리케이션 프로그래머가 실수로 배트맨 토토을 잊어버리는 일이 없습니다.

배트맨 토토몇 가지 중요한 방식으로 SQL 트랜잭션과 상호작용합니다. 첫째, 만일 a배트맨 토토이 트랜잭션 내에서 실행되면 배트맨 토토 이벤트는 트랜잭션이 커밋될 때까지 전달되지 않습니다. 트랜잭션이 중단되면 해당 트랜잭션 내의 모든 명령이 효과가 없으므로 이는 적절합니다.배트맨 토토. 그러나 배트맨 토토 이벤트가 즉시 전달될 것으로 기대한다면 당황스러울 수 있습니다. 둘째, 청취 세션이 트랜잭션 내에 있는 동안 배트맨 토토 신호를 받으면 트랜잭션이 완료(커밋 또는 중단)될 때까지 배트맨 토토 이벤트가 연결된 클라이언트에 전달되지 않습니다. 다시 말하지만, 나중에 중단된 트랜잭션 내에서 배트맨 토토이 전달된 경우 배트맨 토토이 어떻게든 취소되기를 원하지만 서버는 그렇게 할 수 없기 때문입니다."철회"클라이언트에 보낸 배트맨 토토입니다. 따라서 배트맨 토토 이벤트는 트랜잭션 간에만 전달됩니다. 결과적으로 다음을 사용하는 애플리케이션은배트맨 토토실시간 신호를 위해 거래를 짧게 유지해야 합니다.

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

실행하는 클라이언트에 일반적입니다배트맨 토토동일한 배트맨 토토 채널 자체를 수신합니다. 이 경우 다른 모든 청취 세션과 마찬가지로 배트맨 토토 이벤트를 다시 받게 됩니다. 애플리케이션 논리에 따라 이로 인해 쓸모없는 작업이 발생할 수 있습니다. 예를 들어 해당 세션이 방금 작성한 것과 동일한 업데이트를 찾기 위해 데이터베이스 테이블을 읽는 등의 작업이 발생할 수 있습니다. 통지 세션의 서버 프로세스 여부를 확인하면 이러한 추가 작업을 피할 수 있습니다.PID(배트맨 토토 이벤트 메시지에 제공됨)은 자신의 세션과 동일PID(다음에서 사용 가능libpq). 동일할 경우 배트맨 토토 이벤트는 본인의 작업이므로 무시해도 됩니다.

매개변수

채널

신호를 받을 배트맨 토토 채널의 이름(식별자).

페이로드

"페이로드"문자열이 배트맨 토토과 함께 전달됩니다. 이는 단순 문자열 리터럴로 지정되어야 합니다. 기본 구성에서는 8000바이트보다 짧아야 합니다. (바이너리 데이터나 많은 양의 정보를 전달해야 하는 경우에는 이를 데이터베이스 테이블에 넣고 레코드의 키를 보내는 것이 가장 좋습니다.)

참고

전송되었지만 아직 모든 청취 세션에서 처리되지 않은 배트맨 토토을 보관하는 대기열이 있습니다. 이 대기열이 가득 차면 트랜잭션이 호출됩니다.배트맨 토토커밋 시 실패합니다. 대기열은 상당히 크며(표준 설치의 경우 8GB) 거의 모든 사용 사례에 대해 충분한 크기여야 합니다. 그러나 세션이 실행되면 정리가 수행되지 않습니다.듣기그리고 아주 오랜 시간 동안 거래를 시작합니다. 대기열이 절반쯤 차면 정리를 방해하는 세션을 가리키는 경고가 로그 파일에 표시됩니다. 이 경우 정리가 진행될 수 있도록 이 세션이 현재 트랜잭션을 종료하는지 확인해야 합니다.

함수pg_notification_queue_usage현재 대기 중인 배트맨 토토이 차지하는 대기열의 비율을 반환합니다. 참조스포츠 토토 베트맨 PostgreSQL : 문서 : 9.6 : 시스템 정보 기능더 많은 정보를 원하시면.

실행된 트랜잭션배트맨 토토2단계 커밋을 준비할 수 없습니다.

pg_배트맨 토토

배트맨 토토을 보내려면 다음 기능을 사용할 수도 있습니다.pg_배트맨 토토(텍스트, 텍스트). 이 함수는 채널 이름을 첫 번째 인수로, 페이로드를 두 번째 인수로 사용합니다. 이 함수는보다 사용하기가 훨씬 쉽습니다.배트맨 토토일정하지 않은 채널 이름과 페이로드로 작업해야 하는 경우 명령.

다음에서 수신/배트맨 토토 시퀀스 구성 및 실행psql:

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

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

호환성

없습니다배트맨 토토SQL 표준의 문입니다.