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

53.1. 토토 베이

프로토콜에는 시작 및 정상 작동을위한 별도의 단계가 있습니다. 시작 단계에서 프론트 엔드는 서버에 대한 연결을 엽니 다.

정상 작동 중에 프론트 엔드는 쿼리 및 기타 명령을 백엔드로 보냅니다. 백엔드는 쿼리 결과 및 기타 응답을 다시 보냅니다. 몇 가지 사례가 있습니다 (예 :Notify) 백엔드가 원치 않는 메시지를 보내지 만, 대부분의 경우 세션 의이 부분은 프론트 엔드 요청에 의해 주도됩니다.

세션 종료는 일반적으로 프론트 엔드 선택에 의해 이루어 지지만 특정 경우에 백엔드에 의해 강요 될 수 있습니다. 어쨌든 백엔드가 연결을 닫으면 종료하기 전에 열린 (불완전한) 트랜잭션을 롤백합니다..

정상 작동 내에서 SQL 명령은 두 개의 서브 프로토콜 중 하나를 통해 실행할 수 있습니다. 에서간단한 쿼리프로토콜, 프론트 엔드는 텍스트 쿼리 문자열을 보냅니다. 에서확장 쿼리프로토콜, 쿼리 처리는 여러 단계로 분리됩니다 : 구문 분석, 매개 변수 값의 바인딩 및 실행. 이것은 추가 복잡성 비용으로 유연성과 성능 이점을 제공합니다.

정상 작업에는와 같은 특수 작업에 대한 추가 서브 프로토콜이 있습니다.COPY.

53.1.1. 메시징 토토 베이

모든 커뮤니케이션은 메시지 흐름을 통해 이루어집니다. 메시지의 첫 바이트는 메시지 유형을 식별하고 다음 4 바이트는 나머지 메시지의 길이를 지정합니다 (이 길이 수는 자체가 포함되지만 메시지 유형 바이트는 아닙니다).

메시지 스트림과 동기화를 잃지 않도록 서버와 클라이언트는 일반적으로 내용을 처리하기 전에 전체 메시지를 버퍼 (바이트 카운트 사용)로 읽습니다. 이렇게하면 내용을 처리하는 동안 오류가 감지되면 쉽게 복구 할 수 있습니다.

반대로, 서버와 클라이언트는 모두 불완전한 메시지를 보내지 않도록주의해야합니다. 이것은 메시지를 보내기 전에 버퍼에 전체 메시지를 마샬링하여 일반적으로 수행됩니다.

53.1.2. 확장 쿼리 개요

확장 쿼리 프로토콜에서 SQL 명령의 실행은 여러 단계로 나뉩니다. 단계 사이에 보유 된 상태는 두 가지 유형의 객체로 표시됩니다.준비된 진술and포털. 준비된 진술은 텍스트 쿼리 문자열의 구문 분석 및 시맨틱 분석 결과를 나타냅니다.매개 변수. 포털은 즉시 사전에 사전에 사상적으로 사전에 사로 잡힌 문을 나타내며, 누락 된 매개 변수 값이 채워져 있습니다.select진술, 포털은 열린 커서와 동일하지만 커서가 비 처리되지 않기 때문에 다른 용어를 사용하도록 선택합니다select진술.)

전체 실행주기는 a로 구성됩니다.파스텍스트 쿼리 문자열에서 준비 된 문을 생성하는 단계; 에이bindStep. 필요한 매개 변수에 대한 준비된 진술과 값이 주어진 포털을 생성합니다. 그리고 Aexecute포털 쿼리를 실행하는 단계. 행을 반환하는 쿼리의 경우 (select, show등), 실행 단계는 제한된 수의 행만 가져 오라고 말할 수 있으므로 작업을 완료하기 위해 여러 실행 단계가 필요할 수 있습니다..

백엔드는 여러 준비된 진술과 포털을 추적 할 수 있습니다 (그러나 세션 내에 만 존재하며 세션에서 공유되지 않습니다). 기존 준비된 진술과 포털은 만들어 졌을 때 지정된 이름으로 참조됩니다.이름이없는준비된 진술과 포털이 존재합니다. 이들은 이름이 지정된 개체와 동일하게 행동하지만, 쿼리를 한 번만 실행 한 다음 버려지는 경우에 대한 작업은 최적화 된 반면, 명명 된 객체의 작업은 여러 용도에 대한 기대에 최적화됩니다..

53.1.3. 형식 및 형식 코드

특정 데이터 유형의 데이터가 여러 다른 중 하나에서 전송 될 수 있습니다형식. 기준PostgreSQL7.4 유일한 지원 형식은입니다.텍스트andBinary, 그러나 프로토콜은 향후 확장을 제공합니다. 모든 값에 대한 원하는 형식은 a에 의해 지정됩니다.형식 코드. 클라이언트는 각 전송 된 매개 변수 값과 쿼리 결과의 각 열에 대해 형식 코드를 지정할 수 있습니다.

값의 텍스트 표현은 특정 데이터 유형의 입력/출력 변환 기능에 의해 생성되고 수용되는 모든 것입니다. 전송 된 표현에는 후행 널 캐릭터가 없습니다.

정수에 대한 이진 표현은 네트워크 바이트 순서를 사용합니다 (가장 중요한 바이트). 다른 데이터 유형의 경우 문서 또는 소스 코드를 참조하여 이진 표현에 대해 알아보십시오.