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

Notify

이름

메이저 토토 사이트-메이저 토토 사이트 생성

시놉시스

Notify채널[,Payload]

설명

theNotify명령은 a 선택 사항과 함께 메이저 토토 사이트 이벤트"페이로드"각 클라이언트 응용 프로그램에 문자열이 있습니다 이전에 실행되었습니다듣기채널지정된 채널 이름의 경우 현재 데이터베이스에서.

Notify간단한 간호사를 제공합니다 프로세스 액세스 수집을위한 커뮤니케이션 메커니즘 같은메이저 토토 사이트데이터베이스. 에이 페이로드 문자열은 메이저 토토 사이트과 함께 보낼 수 있으며 구조화 된 데이터를 전달하기위한 더 높은 수준의 메커니즘을 구축 할 수 있습니다 데이터베이스의 테이블을 사용하여 추가 데이터를 전달합니다. 듣는 사람에게 알리기 (들).

알림 이벤트를 위해 클라이언트에게 전달 된 정보 알림 채널 이름, 알림 세션이 포함되어 있습니다 서버 프로세스PID페이로드 문자열, 그렇지 않은 경우 빈 문자열입니다. 지정.

채널 이름을 정의하는 것은 데이터베이스 디자이너에 달려 있습니다. 주어진 데이터베이스 및 각 데이터베이스에서 사용됩니다. 일반적으로 채널 이름은 일부 테이블의 이름과 동일합니다. 데이터베이스 및 알림 이벤트는 본질적으로를 의미합니다."이 테이블을 변경했습니다. 새로운 것이 무엇인지보기 ". 그러나 그러한 연관성은 시행되지 않습니다 그만큼Notifyand듣기명령. 예를 들어, 데이터베이스 디자이너 여러 다른 채널 이름을 사용하여 다른 신호를 보낼 수 있습니다 단일 테이블에 대한 종류의 변경. 또는 페이로드 문자열은 다양한 경우를 구별하는 데 사용될 수 있습니다.

언제Notify특정 테이블 변경, 유용한 프로그래밍 발생 기술은를 넣는 것입니다.Notify규칙적으로 그것은 테이블 업데이트에 의해 트리거됩니다. 이런 식으로 메이저 토토 사이트 테이블이 변경되면 자동으로 발생합니다 응용 프로그램 프로그래머는 실수로 그렇게하는 것을 잊을 수 없습니다.

NotifySQL과 상호 작용합니다 몇 가지 중요한 방식으로 거래. 첫째, ANotify거래 내부에서 실행됩니다 이벤트 메이저 토토 사이트 이벤트는 거래가 진행될 때까지 전달되지 않습니다. 커밋되었습니다. 거래가 있다면 이것은 적절합니다 중단되면, 그 내의 모든 명령은를 포함하여 효과가 없었습니다.Notify. 그러나 그것은 당황 할 수 있습니다 하나는 메이저 토토 사이트 이벤트가 전달 될 것으로 기대하고 있습니다 즉시. 둘째, 청취 세션이 a 메이저 토토 사이트 신호는 트랜잭션 내에있는 동안 메이저 토토 사이트 이벤트는 연결된 클라이언트에게 전달되지 않습니다. 거래가 완료된 직후까지 (커밋 또는 중단). 다시 한 번, 추론은 메이저 토토 사이트이 있다면 나중에 중단 된 거래 내에서 전달되면 어쨌든 메이저 토토 사이트이 취소되기를 원하지만 서버 할 수 없음"테이크"한 번 메이저 토토 사이트 클라이언트에게 보냈습니다. 따라서 메이저 토토 사이트 이벤트는 전용입니다 거래간에 전달. 이것의 상승은 그 것입니다 사용 사용 응용 프로그램Notify실시간 신호는 거래를 짧게 유지하려고 노력해야합니다.

동일한 채널 이름이 동일한 페이로드 문자열 인 데이터베이스와 동일한 트랜잭션 서버는 단일 알림 만 전달하기로 결정할 수 있습니다. 에 다른 한편으로, 뚜렷한 페이로드 문자열이있는 알림은 것입니다 항상 뚜렷한 알림으로 전달됩니다. 비슷하게, 다른 트랜잭션의 알림은 접히지 않습니다 하나의 알림으로. 나중에 인스턴스를 떨어 뜨리는 것을 제외하고 중복 알림,Notify동일한 트랜잭션의 메이저 토토 사이트이 얻는 것을 보장합니다 그들이 보내진 순서대로 배달. 또한 보장됩니다 다른 트랜잭션의 메시지는 순서대로 전달됩니다 거래가 저지른 것.

실행하는 클라이언트에 일반적입니다Notify동일한 알림을 듣고 있습니다 채널 자체. 이 경우 알림을받습니다 다른 모든 청취 세션과 마찬가지로 이벤트. 에 따라 응용 프로그램 논리, 이것은 쓸모없는 작업을 초래할 수 있습니다. 예를 들어, 데이터베이스 테이블을 읽으려면 동일한 업데이트를 찾으십시오. 그 세션은 방금 썼습니다. 그러한 추가를 피할 수 있습니다 세션 알림의 서버 프로세스 여부를 알아 차림으로써 작동PID( 메이저 토토 사이트 이벤트 메시지)는 자신의 세션과 동일합니다PID(이용 가능libpq). 그들이 동일 할 때 메이저 토토 사이트 이벤트는 자신의 작업이며 무시됩니다.

매개 변수

채널

알림 채널의 이름을 신호하십시오 (Aly 식별자).

Payload

the"페이로드"문자열 메이저 토토 사이트과 함께 전달됩니다. 이것은해야합니다 간단한 문자열 문자로 지정됩니다. 기본값에서 구성 8000 바이트보다 짧아야합니다. (만약에 이진 데이터 또는 많은 양의 정보가 의사 소통, 데이터베이스 테이블에 넣는 것이 가장 좋습니다. 기록의 키를 보내십시오.)

노트

전송 된 메이저 토토 사이트을 보유하는 큐가 있습니다. 그러나 모든 청취 세션에서 아직 처리되지는 않았습니다. 이 대기열이라면 완전 해집니다, 거래 호출Notify커밋에 실패합니다. 대기열은 꽤 있습니다 대형 (표준 설치의 8GB)과 충분히 여야합니다. 거의 모든 사용 사례에 크기가 있습니다. 그러나 청소는 아무것도 필요하지 않습니다 세션이 실행되는 경우듣기및 그런 다음 아주 오랫동안 거래에 들어갑니다. 일단 대기열이 있습니다 반 충만 정리를 방지하는 세션. 이 경우 당신은해야합니다 이 세션은 현재 거래를 종료하여 정리가 진행될 수 있습니다.

실행 된 거래Notify2 상을 준비 할 수 없습니다 저지르다.

pg_notify

메이저 토토 사이트을 보내려면 함수를 사용할 수도 있습니다pg_notify(텍스트, 텍스트). 함수는 채널 이름은 첫 번째 인수로, 페이로드는 두번째. 기능은 사용하기가 훨씬 쉽습니다Notify작업 해야하는 경우 명령 비 스턴트 채널 이름 및 페이로드.

예제

듣기 및 실행/실행/실행PSQL:

가상 듣기;
가상 알림;
PID 8448을 사용한 서버 프로세스에서 수신 된 비동기 알림 "Virtual".
가상으로 '이것은 페이로드입니다';
PID 8448을 사용한 서버 프로세스에서받은 페이로드입니다.

foo를 들어라;
pg_notify를 선택하십시오 ( 'fo'|| 'o', 'pay'|| 'load');
PID 14728을 사용한 서버 프로세스에서 수신 된 페이로드 "페이로드"가 포함 된 비동기 알림 "foo"

호환성

없음Notify진술 SQL 표준.