이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 19.7. 롤 토토 계획버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

18.6. 롤 토토 계획

18.6.1. 플래너 방법 구성

이 구성 매개변수는 대략적인 방법을 제공합니다. 쿼리 최적화 프로그램이 선택한 쿼리 계획에 영향을 줍니다. 만약에 특정 쿼리에 대해 최적화 프로그램이 선택한 기본 계획 최적이 아닌 경우 다음 중 하나를 사용하여 임시 솔루션을 찾을 수 있습니다. 최적화 프로그램이 다음을 수행하도록 강제하는 이러한 구성 매개변수 다른 요금제를 선택하세요. 이 설정 중 하나를 끄는 중 그러나 영구적으로 좋은 생각은 거의 없습니다. 더 나은 방법 최적화 프로그램이 선택한 계획의 품질을 향상시킵니다. 조정을 포함합니다.플래너 비용 상수, 실행 중분석더 자주, 증가 의 값default_statistics_target구성 매개변수 및 양 증가 다음을 사용하여 특정 열에 대해 수집된 통계테이블 세트 통계 변경.

enable_bitmapscan (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 비트맵 스캔 계획 유형. 기본값은켜짐.

enable_hashagg (부울)

롤 토토 플래너의 해시 사용을 활성화 또는 비활성화합니다. 집계 계획 유형. 기본값은켜짐.

enable_hashjoin (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 해시 조인 계획 유형. 기본값은켜짐.

enable_indexscan (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 인덱스 스캔 계획 유형. 기본값은켜짐.

enable_mergejoin (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 병합-조인 계획 유형. 기본값은켜짐.

enable_nestloop (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 중첩 루프 조인 계획. 제압이 불가능해요 중첩 루프는 완전히 조인되지만 이 변수는 꺼집니다. 플래너가 다른 것이 있으면 하나를 사용하지 못하게 합니다. 방법을 사용할 수 있습니다. 기본값은켜짐.

enable_seqscan (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 순차 스캔 계획 유형. 제압이 불가능해요 순차 스캔은 완전히 수행되지만 이 변수는 꺼집니다. 플래너가 다른 것이 있으면 하나를 사용하지 못하게 합니다. 방법을 사용할 수 있습니다. 기본값은켜짐.

enable_sort (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다. 명시적인 정렬 단계. 제압이 불가능해요 명시적 정렬은 완전히 정렬되지만 이 변수는 꺼집니다. 플래너가 다른 것이 있으면 하나를 사용하지 못하게 합니다. 방법을 사용할 수 있습니다. 기본값은켜짐.

enable_tidscan (부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다.TID스캔 계획 유형. 기본값은켜짐.

18.6.2. 플래너 비용 상수

비용다음에 설명된 변수 이 섹션은 임의의 규모로 측정됩니다. 오직 그들의 상대적인 값이 중요하므로 모두 확장하거나 축소합니다. 동일한 요인으로 인해 계획자의 계획이 변경되지 않습니다. 선택. 전통적으로 이러한 변수는 다음을 참조했습니다. 비용 단위로 순차적 페이지 가져오기; 즉,seq_page_cost일반적으로 다음과 같이 설정됩니다.1.0그리고 다른 비용 변수는 다음과 같습니다. 이를 참고하여 설정합니다. 하지만 다른 척도를 사용할 수도 있습니다. 원하는 경우 실제 실행 시간(밀리초) 등 특정 컴퓨터에서.

참고:안타깝게도 잘 정의된 항목이 없습니다. 비용 변수의 이상적인 값을 결정하는 방법. 이는 전체 혼합에 대한 평균으로 가장 잘 처리됩니다. 특정 설치에서 얻을 수 있는 쿼리입니다. 이는 다음을 의미합니다. 단지 몇 가지 실험을 토대로 그것들을 바꾸는 것은 매우 위험합니다.

seq_page_cost (떠다니는 포인트)

플래너의 디스크 페이지 비용 추정치를 설정합니다. 일련의 순차적 가져오기의 일부인 가져오기입니다. 는 기본값은 1.0입니다.

random_page_cost (떠다니는 포인트)

계획자의 비용 추정치를 설정합니다. 비순차적으로 가져온 디스크 페이지. 기본값은 4.0입니다. 이 값을 상대적으로 줄이면seq_page_cost시스템이 인덱스 스캔을 선호합니다. 그것을 올리면 인덱스 스캔이 보일 것입니다 상대적으로 더 비쌉니다. 둘 다 올리거나 내릴 수 있습니다 값을 함께 사용하여 디스크 I/O의 중요성 변경 CPU 비용 대비 비용은 다음 매개변수입니다.

팁:시스템에서 설정할 수는 있지만random_page_cost이하로 보다seq_page_cost그렇습니다 그렇게 하는 것은 육체적으로 합리적이지 않습니다. 그러나 설정 데이터베이스가 완전히 동일하다면 의미가 있습니다. RAM에 캐시됩니다. 이 경우 페널티가 없기 때문입니다. 페이지를 순서대로 터치하는 경우. 또한, 캐시가 많은 데이터베이스에서는 두 값을 모두 낮춰야 합니다. CPU 매개변수와 관련하여 비용이 이미 RAM에 있는 페이지를 가져오는 것보다 훨씬 작습니다. 보통 그렇겠죠.

cpu_tuple_cost (떠다니는 포인트)

계획자의 처리 비용 추정치를 설정합니다. 쿼리 중 각 행. 기본값은 0.01입니다.

cpu_index_tuple_cost (부동 소수점)

계획자의 처리 비용 추정치를 설정합니다. 인덱스 스캔 중 각 인덱스 항목. 기본값은 0.005.

cpu_operator_cost (떠다니는 포인트)

계획자의 처리 비용 추정치를 설정합니다. 쿼리 중에 실행되는 각 연산자 또는 함수입니다. 는 기본값은 0.0025입니다.

유효_캐시_크기 (정수)

유효 크기에 대한 계획자의 가정을 설정합니다. 단일 쿼리에 사용할 수 있는 디스크 캐시의 수입니다. 이는 사용 비용 추정에 반영됩니다. 색인; 값이 높을수록 인덱스 스캔 가능성이 높아집니다. 사용됩니다. 값이 낮을수록 사용 가능성이 높아집니다. 순차 스캔이 사용됩니다. 이것을 설정할 때 매개변수를 모두 고려해야 합니다.포스트그레SQL의 공유 버퍼 및 다음 용도로 사용될 커널의 디스크 캐시 부분포스트그레SQL데이터 파일. 또한 예상 동시 접속자 수도 고려하세요. 다른 테이블에 대한 롤 토토를 수행해야 하기 때문에 사용 가능한 공간을 공유합니다. 이 매개변수는 효과가 없습니다. 할당된 공유 메모리의 크기에 대해PostgreSQL, 예약도 하지 않습니다. 커널 디스크 캐시; 추정에만 사용됩니다. 목적. 기본값은 128MB입니다(128MB).

18.6.3. 유전자 롤 토토 최적화

유전자 쿼리 최적화 프로그램(GEQO)은 다음을 수행하는 알고리즘입니다. 휴리스틱 검색을 이용한 쿼리 계획. 이렇게 하면 계획이 줄어듭니다. 복잡한 쿼리(많은 관계를 결합하는 쿼리)에 대한 시간 때로는 그보다 열등한 계획을 만드는 데 드는 비용 일반적인 완전 검색 알고리즘에 의해 발견됩니다. 또한 GEQO의 검색은 무작위로 이루어지므로 계획이 다를 수 있습니다. 비결정적으로. 자세한 내용은 참조제49장.

geqo (부울)

유전자 롤 토토 최적화를 활성화 또는 비활성화합니다. 이 기본적으로 켜져 있습니다. 일반적으로 끄지 않는 것이 가장 좋습니다. 생산 중;geqo_threshold변수는 더 많은 것을 제공합니다 GEQO 사용을 제어하는 세분화된 방법입니다.

geqo_threshold (정수)

유전자 쿼리 최적화를 사용하여 다음과 같은 쿼리를 계획하세요. 적어도 이만큼은발신항목 참여. (참고: a전체 외부 가입구조물은 하나만으로 계산됩니다.발신item.) 기본값은 12입니다. 더 간단하게 일반적으로 결정론적 롤 토토를 사용하는 것이 가장 좋습니다. 철저한 계획자이지만 테이블이 많은 롤 토토의 경우 결정론적 플래너가 너무 오래 걸립니다.

geqo_effort (정수)

계획 시간과 쿼리 간의 균형을 제어합니다. GEQO의 품질 계획. 이 변수는 정수여야 합니다. 범위는 1부터 10까지입니다. 기본값은 5입니다. 더 크게 값을 설정하면 쿼리 계획에 소요되는 시간이 늘어나지만 또한 효율적인 쿼리 계획이 실행될 가능성도 높아집니다. 선정될 예정입니다.

geqo_effort실제로는 그렇지 않습니다 직접적으로 무엇이든 하십시오. 을 계산하는 데에만 사용됩니다. 영향을 미치는 다른 변수의 기본값 GEQO 동작(아래 설명) 원하시면 가능합니다 대신 다른 매개변수를 직접 설정하세요.

geqo_pool_size (정수)

GEQO가 사용하는 풀 크기를 제어합니다. 유전적 집단의 개인 수. 반드시 최소 2개 이상이어야 하며 유용한 값은 일반적으로 100~100입니다. 1000. 0(기본 설정)으로 설정된 경우 적합한 값은 다음을 기준으로 선택됩니다.geqo_effort및 테이블 수 롤 토토입니다.

geqo_세대 (정수)

GEQO가 사용하는 세대 수를 제어합니다. 알고리즘의 반복 횟수입니다. 반드시 적어도 하나이고 유용한 값은 다음과 같은 범위에 있습니다. 수영장 크기. 0으로 설정된 경우(기본 설정) 다음을 기준으로 적절한 값이 선택됩니다.geqo_pool_size.

geqo_selection_bias (부동 소수점)

GEQO가 사용하는 선택 바이어스를 제어합니다. 는 선택 편향은 선택 압력입니다. 인구. 값은 1.50에서 2.00 사이일 수 있습니다. 후자 기본값입니다.

18.6.4. 기타 플래너 옵션

default_statistics_target (정수)

테이블 열에 대한 기본 통계 목표를 설정합니다. 다음을 통해 설정된 열별 대상이 없는 경우테이블 세트 통계 변경. 값이 클수록 수행하는 데 필요한 시간이 늘어납니다.분석, 그러나 품질이 향상될 수 있습니다. 기획자의 추정. 기본값은 100입니다. 자세한 내용은 통계 이용에 관한 정보PostgreSQL롤 토토 플래너, 참조윈 토토.

constraint_exclusion (열거형)

롤 토토 플래너의 테이블 제약 조건 사용을 제어합니다 롤 토토를 최적화합니다. 허용되는 값은constraint_exclusion아르켜짐(모든 테이블의 제약 조건 검사),꺼짐(제약조건을 검사하지 않음), 그리고파티션(조사하다 상속 하위 테이블에 대한 제약 조건 및유니온 전체하위 쿼리).파티션기본값입니다 설정.

이 매개변수가 특정 테이블에 대해 허용하는 경우, 플래너는 롤 토토 조건을 테이블의 조건과 비교합니다.확인제약조건 및 생략 조건이 모순되는 스캔 테이블 제약. 예를 들면:

CREATE TABLE 상위(키 정수, ...);
CREATE TABLE child1000(확인(1000에서 1999 사이의 키)) INHERITS(부모);
CREATE TABLE child2000(확인(2000에서 2999 사이의 키)) INHERITS(부모);
...
SELECT * FROM 상위 WHERE 키 = 2400;

제약조건 제외가 활성화되면 이선택스캔하지 않습니다어린이1000전혀요. 이는 개선될 수 있습니다 분할된 빌드에 상속을 사용할 때의 성능 테이블.

현재 제약 조건 제외는 기본적으로 활성화되어 있습니다. 테이블을 구현하는 데 자주 사용되는 경우에만 해당 파티셔닝. 모든 테이블에 대해 이를 켜면 추가 비용이 부과됩니다. 단순 작업에서 꽤 눈에 띄는 계획 오버헤드 쿼리는 대부분 간단한 경우 아무런 이점도 얻지 못합니다. 쿼리. 분할된 테이블이 없는 경우 다음을 수행할 수 있습니다. 완전히 끄는 것이 좋습니다.

참조섹션 5.9.4사용에 대한 자세한 내용은 제약 조건 제외 및 파티셔닝.

cursor_tuple_fraction (부동 소수점)

계획자의 분수 추정치를 설정합니다. 검색될 커서의 행. 기본값은 0.1입니다. 이 설정의 값이 작을수록 플래너는 더 편향됩니다. 사용 중"빠른 시작"계획 처음 몇 행을 빠르게 검색하는 커서 모든 행을 가져오는 데 시간이 오래 걸릴 수 있습니다. 값이 클수록 총 추정치가 더 강조됩니다. 시간. 최대 설정 1.0에서 커서가 계획되어 있습니다. 총계만 고려하면 일반 쿼리와 똑같습니다. 첫 번째 행이 얼마나 빨리 나올지는 예상 시간이 아니라 예상 시간입니다. 배달되었습니다.

from_collapse_limit (정수)

플래너는 하위 롤 토토를 상위 롤 토토로 병합합니다 결과인 경우발신목록은 이만큼의 품목은 없습니다. 값이 작을수록 감소 시간을 계획하지만 열악한 쿼리 계획이 생성될 수 있습니다. 는 기본값은 8입니다. 자세한 내용은 참조섹션 14.3.

이 값을 다음으로 설정 중geqo_threshold또는 그 이상이 GEQO 플래너의 사용을 트리거할 수 있으며, 그 결과 비결정적 계획. 참조섹션 18.6.3.

join_collapse_limit (정수)

계획자는 명시적으로 다시 작성합니다가입구조물(제외전체 조인s)를 목록으로발신목록이 다음 이하일 때마다 항목 이 많은 항목이 발생합니다. 값이 작을수록 감소 계획하는 데 시간이 걸리지만 열등한 쿼리 계획이 생성될 수 있습니다.

기본적으로 이 변수는 다음과 동일하게 설정됩니다.from_collapse_limit입니다. 대부분의 용도에 적합합니다. 1로 설정하면 명시적 재정렬가입s. 따라서 쿼리에 지정된 명시적인 조인 순서는 관계가 결합되는 실제 순서가 됩니다. 쿼리 플래너가 항상 최적의 조인을 선택하는 것은 아닙니다. 주문; 고급 사용자는 이를 임시로 설정하도록 선택할 수 있습니다. 변수를 1로 설정한 다음 조인 순서를 지정합니다. 명시적으로 욕망합니다. 자세한 내용은 참조섹션 14.3.

이 값을 다음으로 설정 중geqo_threshold또는 그 이상이 GEQO 플래너의 사용을 트리거할 수 있으며, 그 결과 비결정적 계획. 참조섹션 18.6.3.