pl/pg롤 토토로드 가능합니다 에 대한 절차 언어Postgre롤 토토데이터베이스 시스템.
이 패키지는 원래 Jan Wieck에 의해 작성되었습니다. 이것
문서는 부분적으로 Roberto Mello (에 의해 작성되었습니다.<rmello@fslc.usu.edu
).
의 디자인 목표pl/pg롤 토토로딩 가능한 것을 만들어야했습니다 절차 언어
함수를 생성하고 트리거를 만드는 데 사용될 수 있습니다 절차,
제어 구조 추가롤 토토언어,
복잡한 계산을 수행 할 수 있습니다.
모든 사용자 정의 유형, 함수를 상속합니다 운영자,
서버에서 신뢰할 수 있도록 정의 할 수 있습니다.
사용하기 쉽습니다.
thepl/pg롤 토토전화 처리기 함수의 소스 텍스트를 구문 분석하고 내부를 생성합니다 이진 명령 트리 기능이 처음으로 호출되는 경우 (하나의 백엔드 프로세스 내에서). 지시 나무가 완전히 번역PL/PG롤 토토진술 구조이지만 개인16999_17004표현 및롤 토토함수에 사용 된 쿼리는 그렇지 않습니다 즉시 번역.
각 표현 및롤 토토쿼리는 기능에 처음 사용됩니다.
그만큼pl/pg롤 토토통역사
준비된 실행 계획을 만듭니다 (사용SPI관리자SPI_PREPARE
andSPI_SAVEPLAN
함수). 후속 방문
그 표현 또는 쿼리는 준비된 계획을 재사용합니다. 따라서, a
많은 진술이 포함 된 조건부 코드로 기능합니다
실행 계획이 필요한 경우에만 준비합니다.
일생 동안 실제로 사용되는 계획을 저장하십시오.
데이터베이스 연결의. 이것은 상당한 것을 제공 할 수 있습니다
구문 분석 활동의 절약. 단점은 a
특정 표현식 또는 쿼리는 그 때까지 감지되지 않을 수 있습니다.
함수의 일부는 실행 중에 도달합니다.
한 번pl/pg롤 토토a 함수의 특정 쿼리에 대한 쿼리 계획은 재사용됩니다. 데이터베이스 연결의 수명을위한 계획. 이것은 일반적으로 성능의 승리이지만 일부 문제를 일으킬 수 있습니다. 데이터베이스 스키마를 동적으로 변경하는 경우 예를 들어:
함수 create populate () 정수를 반환합니다. 선언하다 - 선언 시작하다 my_function ()을 수행하십시오. 끝; '언어'plpgsql ';
위의 함수를 실행하면 OID를 참조합니다.
을 위한my_function ()
쿼리에서
성명서를위한 계획. 나중에 떨어지면
재창조my_function ()
, thepopulate ()
할 수 없습니다
찾다my_function ()
더 이상. 너
그러면 다시 만들어야 할 것입니다populate ()
또는 적어도 새 데이터베이스를 시작하십시오
세션이 새로 작성되도록 세션.
때문에pl/pg롤 토토저장 이런 식으로 실행 계획, A에 직접 나타나는 쿼리pl/pg롤 토토함수를 참조해야합니다 모든 실행마다 동일한 테이블과 필드로; 즉, 당신 매개 변수를 테이블 또는 필드의 이름으로 사용할 수 없습니다. 질문. 이 제한 사항을 해결하려면 구성 할 수 있습니다 를 사용한 동적 쿼리pl/pg롤 토토execute 문 ---에서 모든 실행에 대한 새로운 쿼리 계획 구성 가격.
입력/출력 변환 및 계산 기능을 제외하고 사용자 정의 유형의 경우 C에서 정의 할 수있는 모든 것 언어 기능은 또한로 수행 할 수 있습니다.pl/pg롤 토토. 복잡한 것을 만들 수 있습니다 조건부 계산 기능을 사용하고 나중에 정의합니다 연산자 또는 기능 색인에서 사용하십시오.
더 나은 성능 (참조섹션 23.1.1.1)
롤 토토 지원 (참조섹션 23.1.1.2)
이식성 (참조섹션 23.1.1.3)
롤 토토언어입니다Postgre롤 토토(그리고 대부분의 다른 관계형 데이터베이스) 쿼리 언어로 사용하십시오. 휴대용입니다 배우기 쉽습니다. 하지만 모든롤 토토명령문을 실행해야합니다 데이터베이스 서버에 의해 개별적으로.
이는 고객 신청서가 각각을 보내야 함을 의미합니다 데이터베이스 서버를 쿼리하고 처리를 기다리십시오. 결과를 받고 계산을 수행 한 다음 다른 사람을 보내십시오 서버에 대한 쿼리. 이 모든 것이 프로세스간에 발생합니다 커뮤니케이션 및 귀하의 경우 네트워크 오버 헤드가 발생할 수 있습니다 클라이언트는 데이터베이스와 다른 컴퓨터에 있습니다 섬기는 사람.
withpl/pg롤 토토가능합니다 그룹 A 계산 블록 및 일련의 쿼리내부데이터베이스 서버이므로 절차의 힘이 있습니다 언어와 롤 토토 사용의 용이성이지만 많은 전체 클라이언트/서버가 없기 때문에 시간 의사 소통 오버 헤드. 이것은 상당한 것을 만들 수 있습니다 성능 증가.
pl/pg롤 토토전원을 추가합니다 유연성과 편의성에 대한 절차 적 언어의롤 토토. 와 함께pl/pg롤 토토모든 데이터를 사용할 수 있습니다 롤 토토의 유형, 열, 운영자 및 기능
왜냐하면PL/PG롤 토토기능이 내부에서 실행Postgre롤 토토,이 기능은 실행됩니다 모든 플랫폼에서Postgre롤 토토실행. 따라서 재사용 할 수 있습니다 코드 및 개발 비용이 적습니다.
개발pl/pg롤 토토is 특히 발전 한 경우 꽤 간단합니다 Oracle 's와 같은 기타 데이터베이스 절차 언어pl/롤 토토. 두 가지 좋은 방법 개발pl/pg롤 토토are :
텍스트 편집기를 사용하고 파일을 다시로드하는P롤 토토
사용Postgre롤 토토's GUI 도구 :pgaccess
개발하는 좋은 방법 중 하나pl/pg롤 토토는 간단히 텍스트를 사용하는 것입니다 당신의 선택의 편집자 당신의 기능을 만들고 다른 콘솔, 사용P롤 토토(Postgre롤 토토의 대화식 모니터)를로드하려면 해당 함수를로드합니다. 당신이 이런 식으로하고 있다면, 사용 함수생성 또는 교체 기능. 그렇게하면 파일을 다시로드하여 업데이트 할 수 있습니다. 함수 정의. 예를 들어:
함수 생성 또는 교체 testfunc (정수) 정수를 반환합니다. .... .... 끝; '언어'plpg롤 토토 ';
실행 중P롤 토토, 또는로드 할 수 있습니다 이러한 함수 정의 파일을 |
\ i filename.롤 토토
그런 다음 즉시 롤 토토 명령을 발행하여 테스트하십시오 기능.
개발하는 또 다른 좋은 방법pl/pg롤 토토사용 중Postgre롤 토토의 GUI 도구 :pgaccess. 그것은 몇 가지 좋은 일을합니다 당신은 단일 크기를 탈출하고 쉽게 만들 수 있습니다 기능을 재창조하고 디버그합니다.