사설 토토

사설 토토 - 실행 진술 사설 토토

시놉시스

사설 토토이름[(data_type[, ...])] as성명서

설명

사설 토토사설 토토된 진술을 만듭니다. 사설 토토된 명령문은 성능을 최적화하는 데 사용할 수있는 서버 측 객체입니다. 때사설 토토명령문이 실행되고, 지정된 진술은 구문 분석, 분석 및 다시 작성됩니다.execute그 후에 명령이 발행되면 사설 토토된 진술이 계획되고 실행됩니다. 이 노동 부서는 반복적 인 구문 분석 작업을 피하고, 실행 계획은 제공된 특정 매개 변수 값에 의존 할 수있게합니다.

사설 토토된 진술은 매개 변수를 취할 수 있습니다. 사설 토토된 명령문을 작성할 때 사용 위치별로 매개 변수를 참조하십시오.$ 1, $ 2등. 해당 매개 변수 데이터 유형의 해당 목록을 선택적으로 지정할 수 있습니다. 매개 변수의 데이터 유형이 지정되지 않았거나로 선언 된 경우알 수없는, 유형은 매개 변수가 처음 참조되는 컨텍스트 (가능한 경우)에서 추론됩니다. 명령문을 실행할 때의 이러한 매개 변수의 실제 값을 지정합니다.execute진술. 참조execute그것에 대한 자세한 내용은.

사설 토토된 진술은 현재 데이터베이스 세션의 지속 시간에 대해서만 지속됩니다. 세션이 종료되면 사설 토토된 진술이 잊혀지므로 다시 사용하기 전에 재현해야합니다. 이는 또한 여러 동시 데이터베이스 클라이언트가 단일 사설 토토 된 문을 사용할 수 없음을 의미합니다. 그러나 각 클라이언트는 사용할 사설 토토된 진술을 만들 수 있습니다. 사설 토토된 진술은를 사용하여 수동으로 정리할 수 있습니다.딜 로이징명령.

사설 토토된 진술은 단일 세션이 많은 유사한 진술을 실행하는 데 사용될 때 가장 큰 성능 이점을 가질 수 있습니다. 진술이 계획 또는 재 작성이 복잡한 경우, 예를 들어, 쿼리에 많은 테이블의 조인이 포함되거나 여러 규칙의 적용이 필요한 경우 성능 차이가 특히 중요합니다. 진술이 계획 및 재 작성이 비교적 간단하지만 실행하는 데 비교적 비싸면 사설 토토된 진술의 성능 이점은 눈에 띄지 않습니다.

매개 변수

이름

이 특정 사설 토토 진술에 주어진 임의의 이름. 그것은 단일 세션 내에서 고유해야하며 이후에 사설 토토된 진술을 실행하거나 거래하는 데 사용됩니다.

data_type

사설 토토 된 문에 대한 매개 변수의 데이터 유형. 특정 매개 변수의 데이터 유형이 지정되지 않거나로 지정된 경우알 수없는, 매개 변수가 처음 참조되는 컨텍스트에서 추론됩니다. 사설 토토된 명령문 자체의 매개 변수를 참조하려면 사용$ 1, $ 2

진술

anyselect, 삽입, 업데이트, 삭제, 병합또는진술.

노트

사설 토토된 진술은 a로 실행할 수 있습니다.제네릭 계획또는 A사용자 정의 계획. 일반적인 계획은 모든 실행에서 동일하지만 해당 호출에 주어진 매개 변수 값을 사용하여 특정 실행에 대해 사용자 정의 계획이 생성됩니다. 일반적인 계획을 사용하면 계획 간접비를 피하지만 일부 상황에서는 플래너가 매개 변수 값에 대한 지식을 사용할 수 있기 때문에 사용자 정의 계획이 실행하는 것이 훨씬 더 효율적입니다. (물론, 사설 토토된 명령문에 매개 변수가 없다면, 이것은 무의미하고 일반적인 계획이 항상 사용됩니다.)

기본적으로 (즉, 언제plan_cache_modeauto), 서버는 매개 변수가있는 사설 토토된 명령문에 일반 또는 사용자 정의 계획을 자동으로 선택합니다. 이에 대한 현재 규칙은 처음 5 개의 실행이 사용자 정의 계획으로 수행되며 해당 계획의 평균 추정 비용이 계산된다는 것입니다. 그런 다음 일반 계획이 작성되고 예상 비용은 평균 사용자 정의 계획 비용과 비교됩니다. 후속 처형은 비용이 평균 커스텀 플랜 비용보다 크지 않은 경우 일반 계획을 사용하여 반복적 인 회복이 바람직한 것처럼 보이도록합니다.

이 휴리스틱은 재정의하여 서버가 제네릭 또는 사용자 정의 계획을 사용하여 설정하여plan_cache_modetoForce_Generic_plan또는Force_Custom_plan각각. 이 설정은 일반 계획의 비용 추정치가 어떤 이유로 든 심하게 꺼지는 경우 주로 유용하며 실제 비용이 맞춤형 계획보다 훨씬 더 많은 경우에도 선택할 수 있습니다.

쿼리 계획을 검토하려면PostgreSQL사설 토토된 진술에 사용 중입니다.설명, 예를 들어

Execute 설명이름(Parameter_Values);

일반 계획이 사용되는 경우 매개 변수 기호가 포함됩니다$n, 사용자 정의 계획에는 제공된 매개 변수 값이 그것으로 대체됩니다.

쿼리 계획 및 수집 한 통계에 대한 자세한 내용은PostgreSQL그 목적은 참조분석문서.

사설 토토된 진술의 주요 요점은 반복 된 구문 분석 및 진술 계획을 피하는 것입니다.PostgreSQL명령문에 사용 된 데이터베이스 개체가 정의 (DDL) 변경 사항 (DDL) 변경 또는 플래너 통계가 이전에 사설 토토된 명령문을 사용한 후 업데이트 될 때마다 명령문을 다시 분석하고 다시 계획 할 것입니다. 또한이면search_path하나의 사용에서 다음 사용으로 변경되면, 진술은 새로운 것을 사용하여 재판매됩니다search_path. (이 후자의 행동은 새로운 것입니다PostgreSQL9.3.)이 규칙은 동일한 쿼리 텍스트를 반복해서 다시 제출하는 것과 동일하게 사설 토토된 명령문을 사용하지만, 객체 정의가 변경되지 않은 경우, 특히 최상의 계획이 사용되는 경우에도 동일하게 유지되는 경우 성능 이점을 사용합니다. 시맨틱 동등성이 완벽하지 않은 경우의 예는 진술이 자격이없는 이름으로 표를 언급하고 같은 이름의 새 테이블이 앞부분에서 나타나는 스키마에서 생성된다는 것입니다.search_path, 명령문에 사용 된 객체가 변경되지 않았으므로 자동 리바스가 발생하지 않습니다. 그러나 다른 변화가 다시 부드러워지면 새 테이블은 후속 용도로 참조됩니다.

쿼리 세션에서 사설 토토된 모든 진술을 볼 수 있습니다.스포츠 토토 : 문서 : 17 : 52.15시스템보기

예제

an에 대한 사설 토토된 진술 만들기삽입진술을 한 다음 실행 :

Fooplan 사설 토토 (int, 텍스트, 부, 숫자) AS
    foo 값에 삽입 ($ 1, $ 2, $ 3, $ 4);
Fooplan (1, 'Hunter Valley', 'T', 200.00);

a에 대한 사설 토토된 진술 만들기select진술을 수행 한 다음 실행 :

usrptplan (int)을 사설 토토하십시오
    선택 *에서 사용자 u, logs l where u.usrid = $ 1 및 u.usrid = l.usrid를 선택하십시오.
    및 l.date = $ 2;
usrrptplan (1, current_date); 실행

이 예에서는 두 번째 매개 변수의 데이터 유형이 지정되지 않았으므로 컨텍스트에서 추론됩니다.$ 2사용됩니다.

호환성

SQL 표준에는 a가 포함됩니다.사설 토토진술이지만 내장 된 SQL에만 사용하기위한 것입니다. 이 버전의사설 토토Statement도 다소 다른 구문을 사용합니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면