그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스포츠 토토함수 (그리고 필요하지 않습니다).
스포츠 토토언어입니다Postgre스포츠 토토및 기타 대부분 관계형 데이터베이스는 쿼리 언어로 사용됩니다. 휴대성이 좋고 배우기 쉽다. 하지만 매스포츠 토토문은 데이터베이스에 의해 개별적으로 실행되어야 합니다. 서버.
즉, 클라이언트 응용프로그램이 각 쿼리를 보내야 함을 의미합니다. 데이터베이스 서버로 이동하여 처리될 때까지 기다린 후 수신 결과를 처리하고 계산을 수행한 다음 추가로 전송합니다. 서버에 쿼리합니다. 이 모든 것은 프로세스 간을 발생시킵니다. 통신을 수행할 경우 네트워크 오버헤드도 발생합니다. 클라이언트가 데이터베이스 서버와 다른 시스템에 있습니다.
함께PL/pg스포츠 토토그룹화할 수 있습니다 계산 블록과 일련의 쿼리내부데이터베이스 서버, 따라서 절차적 언어의 힘과 사용의 용이성 하지만 스포츠 토토이 없기 때문에 상당한 비용 절감이 가능합니다. 전체 클라이언트/서버 통신 오버헤드.
클라이언트와 클라이언트 간의 추가 왕복 제거 서버
클라이언트가 필요로 하지 않는 중간 결과 서버와 서버 간에 마샬링되거나 전송될 필요가 없습니다. 클라이언트
추가 쿼리가 필요하지 않습니다. 파싱
이를 통해 상당한 성능 향상이 가능합니다. 저장된 응용 프로그램을 사용하지 않는 응용 프로그램과 비교 기능.
또한,PL/pg스포츠 토토당신은 할 수 있어요 스포츠 토토의 모든 데이터 유형, 연산자 및 함수를 사용합니다.
다음에 작성된 기능PL/pg스포츠 토토인수로 무엇이든 받아들일 수 있습니다. 서버에서 지원하는 스칼라 또는 배열 데이터 유형이며 다음을 수행할 수 있습니다. 이러한 유형 중 하나의 결과를 반환합니다. 그들은 또한 수락하거나 이름으로 지정된 복합 유형(행 유형)을 반환합니다. 그것은 a를 선언하는 것도 가능합니다.PL/pg스포츠 토토반환 기능기록, 결과가 행 유형임을 의미합니다. 해당 열은 호출의 사양에 따라 결정됩니다. 쿼리(에서 설명한 대로)섹션 7.2.1.4.
PL/pg스포츠 토토함수는 또한 다형성 유형을 허용하고 반환하도록 선언됩니다.모든 요소그리고임의 배열. 에서 처리하는 실제 데이터 유형 다형성 함수는 설명한 대로 호출마다 다를 수 있습니다. 에서섹션 33.2.5. 예는 다음과 같습니다.섹션 37.4.1.
PL/pg스포츠 토토함수는 또한 a를 반환한다고 선언됩니다."설정"또는 단일 인스턴스를 반환할 수 있는 모든 데이터 유형의 테이블입니다. 이러한 함수는 다음을 실행하여 출력을 생성합니다.다음으로 돌아가기의 원하는 각 요소에 대해 결과 집합입니다.
마지막으로, aPL/pg스포츠 토토함수는 반환하도록 선언될 수 있습니다.무효유용한 반환 값이 없는 경우.
PL/pg스포츠 토토함수는 또한 명시적 매개변수 대신 출력 매개변수를 사용하여 선언해야 합니다. 반환 유형 지정. 이것은 아무것도 추가하지 않습니다 언어에 대한 기본적인 능력이지만 종종 특히 여러 값을 반환할 때 편리합니다.