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

37.1. 개요

PL/pg스포츠 토토호출 핸들러 함수의 소스 텍스트를 구문 분석하고 내부 바이너리를 생성합니다. 함수가 처음 호출될 때 명령 트리(내부 각 세션). 지침 트리는 다음을 완전히 번역합니다.PL/pg스포츠 토토문 구조, 그러나 개인스포츠 토토표현식 그리고스포츠 토토다음에 사용되는 명령 함수는 즉시 번역되지 않습니다.

각 식과스포츠 토토명령이 함수에서 처음 사용되었습니다.PL/pg스포츠 토토통역사가 준비된 것을 생성합니다. 실행 계획(SPI관리자SPI_prepare그리고SPI_saveplan함수).다음 방문 표현이나 명령은 준비된 계획을 재사용합니다. 따라서 함수 다음과 같은 많은 명령문을 포함하는 조건부 코드를 사용합니다. 실행 계획이 필요할 수 있습니다. 준비하고 저장만 하면 됩니다. 평생 동안 실제로 사용되는 계획 데이터베이스 연결. 이렇게 하면 총 비용을 크게 줄일 수 있습니다. 실행 계획을 구문 분석하고 생성하는 데 필요한 시간 a의 진술PL/pg스포츠 토토함수. 단점은 특정 표현식에 오류가 있다는 것입니다. 또는 기능의 해당 부분이 완료될 때까지 명령이 감지되지 않을 수 있습니다. 실행에 도달했습니다.

한 번PL/pg스포츠 토토이(가) 만들었습니다 함수의 특정 명령에 대한 실행 계획은 다음과 같습니다. 데이터베이스 연결 수명 동안 해당 계획을 재사용하십시오. 이것은 일반적으로 성능면에서 승리하지만 다음과 같은 경우 몇 가지 문제가 발생할 수 있습니다. 데이터베이스 스키마를 동적으로 변경합니다. 예를 들면:

CREATE FUNCTION populate() 정수를 $$로 반환합니다.
선언
    -- 선언
시작
    my_function()을 수행합니다.
끝;
$$ 언어 plpg스포츠 토토;

위 함수를 실행하면 OID를 참조하게 됩니다. 에 대한my_function()실행 중 다음을 위해 제작된 계획수행성명. 나중에 삭제하고 다시 생성하면my_function()그러면채우기()찾을 수 없습니다my_function()더 이상. 당신은 그런 다음 다시 만들어야 합니다채우기(), 또는 최소한 새 데이터베이스 세션을 시작하여 새로 컴파일했습니다. 이 문제를 피하는 또 다른 방법은 다음을 사용하는 것입니다.함수 생성 또는 교체업데이트 시 의 정의내_기능(언제 함수는"대체됨", OID는 다음과 같습니다. 변경되지 않음).

왜냐하면PL/pg스포츠 토토저장 이런 방식으로 실행 계획을 실행하면 스포츠 토토 명령이 직접 나타납니다. 에PL/pg스포츠 토토함수는 참조해야 함 모든 실행 시 동일한 테이블과 열에 적용됩니다. 즉, 당신 매개변수를 스포츠 토토의 테이블이나 열 이름으로 사용할 수 없습니다. 명령. 이 제한 사항을 해결하려면 다음을 생성할 수 있습니다. 를 사용하는 동적 명령PL/pg스포츠 토토 실행성명 — 새로운 실행 계획을 세우는 대가로 모든 실행.

참고:PL/pg스포츠 토토 실행문은 다음과 관련이 없습니다.토토 커뮤니티 : 문서 : 8.2 : execute스포츠 토토 에서 지원하는 진술Postgre스포츠 토토서버. 서버의실행문은 사용할 수 없습니다 이내PL/pg스포츠 토토함수 (그리고 필요하지 않습니다).

37.1.1. 사용의 장점PL/pg스포츠 토토

스포츠 토토언어입니다Postgre스포츠 토토및 기타 대부분 관계형 데이터베이스는 쿼리 언어로 사용됩니다. 휴대성이 좋고 배우기 쉽다. 하지만 매스포츠 토토문은 데이터베이스에 의해 개별적으로 실행되어야 합니다. 서버.

즉, 클라이언트 응용프로그램이 각 쿼리를 보내야 함을 의미합니다. 데이터베이스 서버로 이동하여 처리될 때까지 기다린 후 수신 결과를 처리하고 계산을 수행한 다음 추가로 전송합니다. 서버에 쿼리합니다. 이 모든 것은 프로세스 간을 발생시킵니다. 통신을 수행할 경우 네트워크 오버헤드도 발생합니다. 클라이언트가 데이터베이스 서버와 다른 시스템에 있습니다.

함께PL/pg스포츠 토토그룹화할 수 있습니다 계산 블록과 일련의 쿼리내부데이터베이스 서버, 따라서 절차적 언어의 힘과 사용의 용이성 하지만 스포츠 토토이 없기 때문에 상당한 비용 절감이 가능합니다. 전체 클라이언트/서버 통신 오버헤드.

  • 클라이언트와 클라이언트 간의 추가 왕복 제거 서버

  • 클라이언트가 필요로 하지 않는 중간 결과 서버와 서버 간에 마샬링되거나 전송될 필요가 없습니다. 클라이언트

  • 추가 쿼리가 필요하지 않습니다. 파싱

이를 통해 상당한 성능 향상이 가능합니다. 저장된 응용 프로그램을 사용하지 않는 응용 프로그램과 비교 기능.

또한,PL/pg스포츠 토토당신은 할 수 있어요 스포츠 토토의 모든 데이터 유형, 연산자 및 함수를 사용합니다.

37.1.2. 지원되는 인수 및 결과 데이터 유형

다음에 작성된 기능PL/pg스포츠 토토인수로 무엇이든 받아들일 수 있습니다. 서버에서 지원하는 스칼라 또는 배열 데이터 유형이며 다음을 수행할 수 있습니다. 이러한 유형 중 하나의 결과를 반환합니다. 그들은 또한 수락하거나 이름으로 지정된 복합 유형(행 유형)을 반환합니다. 그것은 a를 선언하는 것도 가능합니다.PL/pg스포츠 토토반환 기능기록, 결과가 행 유형임을 의미합니다. 해당 열은 호출의 사양에 따라 결정됩니다. 쿼리(에서 설명한 대로)섹션 7.2.1.4.

PL/pg스포츠 토토함수는 또한 다형성 유형을 허용하고 반환하도록 선언됩니다.모든 요소그리고임의 배열. 에서 처리하는 실제 데이터 유형 다형성 함수는 설명한 대로 호출마다 다를 수 있습니다. 에서섹션 33.2.5. 예는 다음과 같습니다.섹션 37.4.1.

PL/pg스포츠 토토함수는 또한 a를 반환한다고 선언됩니다."설정"또는 단일 인스턴스를 반환할 수 있는 모든 데이터 유형의 테이블입니다. 이러한 함수는 다음을 실행하여 출력을 생성합니다.다음으로 돌아가기의 원하는 각 요소에 대해 결과 집합입니다.

마지막으로, aPL/pg스포츠 토토함수는 반환하도록 선언될 수 있습니다.무효유용한 반환 값이 없는 경우.

PL/pg스포츠 토토함수는 또한 명시적 매개변수 대신 출력 매개변수를 사용하여 선언해야 합니다. 반환 유형 지정. 이것은 아무것도 추가하지 않습니다 언어에 대한 기본적인 능력이지만 종종 특히 여러 값을 반환할 때 편리합니다.

구체적인 예는 다음에 나타납니다.섹션 37.4.1그리고섹션 37.7.1.