이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 19.7. 롤 토토 계획버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

18.6. 롤 토토 계획

18.6.1. 플래너 방법 구성

이 구성 매개 변수는 조잡한 방법을 제공합니다 롤 토토 최적화기가 선택한 롤 토토 계획에 영향을 미칩니다. 만약에 특정 롤 토토에 대한 Optimizer가 선택한 기본 계획 최적이 아니며, 임시 솔루션은 하나를 사용하여 찾을 수 있습니다. 이러한 구성 매개 변수 중 최적화를 강제로 제공합니다 다른 계획을 선택하십시오. 이 설정 중 하나를 끄십시오 그러나 영구적으로는 거의 좋은 생각이 아닙니다. 더 나은 방법 Optimizer가 선택한 계획의 품질 향상 조정 포함플래너 비용 상수, running분석더 자주, 의 가치default_statistics_target구성 매개 변수 및 금액 증가 를 사용하여 특정 열에 대한 통계가 수집되었습니다.Alter Table Set Statistics.

enable_bitmapscan(부울)

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

enable_hashagg(부울)

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

enable_hashjoin(부울)

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

enable_indexscan(부울)

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

enable_mergejoin(부울)

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

enable_nestloop(부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다 중첩 루프 가입 계획. 억제하는 것은 불가능합니다 중첩 루프는 완전히 결합되지만이 변수를 끕니다 다른 사람이있는 경우 플래너가 하나를 사용하지 못하게합니다. 사용 가능한 방법. 기본값은on.

enable_seqscan(부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다 순차적 스캔 계획 유형. 억제하는 것은 불가능합니다 순차적 스캔은 완전히 스캔되지만이 변수를 끄십시오 다른 사람이있는 경우 플래너가 하나를 사용하지 못하게합니다. 사용 가능한 방법. 기본값은on.

enable_sort(부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화합니다 명백한 정렬 단계. 억제하는 것은 불가능합니다 명백한 분류는 완전히 분류되지만이 변수를 끄십시오 다른 사람이있는 경우 플래너가 하나를 사용하지 못하게합니다. 사용 가능한 방법. 기본값은on.

enable_tidscan(부울)

롤 토토 플래너의 사용을 활성화 또는 비활성화tid스캔 계획 유형. 기본값은on.

18.6.2. 플래너 비용 상수

the비용변수에 설명되어 있습니다 이 섹션은 임의의 척도로 측정됩니다. 그들의 상대적 값은 중요하므로 모두 위 또는 아래로 확장합니다. 같은 요소는 플래너의 변화가 없습니다. 선택. 전통적으로 이러한 변수는 참조되었습니다 순차적 페이지는 비용 단위로 가져옵니다. 즉,seq_page_cost전통적으로 설정되었습니다1.0그리고 다른 비용 변수는입니다 그것을 참조하여 설정합니다. 그러나 다른 규모를 사용할 수 있습니다 원하는 경우, 예를 들어 실제 실행 시간의 밀리 초. 특정 기계에서.

참고 :불행히도 잘 정의되지 않았습니다 비용 변수에 대한 이상적인 값을 결정하는 방법. 그들은 전체 혼합보다 평균으로 가장 잘 취급됩니다. 특정 설치가 얻을 수있는 쿼리. 이것은 의미합니다 몇 가지 실험에 기초하여 변경 매우 위험합니다.

SEQ_PAGE_COST(플로팅 가리키다)

디스크 페이지 비용에 대한 플래너의 추정치를 설정합니다. 일련의 순차적 인 페치의 일부입니다. 그만큼 기본값은 1.0입니다.

random_page_cost(부동 가리키다)

a 비용에 대한 플래너의 추정치를 설정합니다 비 순차적 인 디스크 페이지. 기본값은 4.0입니다. 이 값을 감소시키는seq_page_cost시스템이 발생합니다 인덱스 스캔을 선호합니다. 그것을 높이면 인덱스 스캔이 보일 것입니다 상대적으로 더 비쌉니다. 둘 다를 올릴 수 있습니다 디스크 I/O의 중요성을 변경하기 위해 함께 값 CPU 비용에 대한 비용은 다음 매개 변수.

팁 :시스템에서 설정할 수는 있지만random_page_cost보다SEQ_PAGE_COST그렇게하는 것은 신체적으로 현명하지 않습니다. 그러나 설정 데이터베이스가 전적으로 인 경우 동등한 의미가 있습니다 이 경우 페널티가 없기 때문에 RAM으로 캐시 시퀀스에서 페이지를 터치합니다. 또한, a 크게 가축 데이터베이스 두 값을 낮추어야합니다 비용 이후 CPU 매개 변수와 관련이 있습니다 이미 RAM으로 페이지를 가져 오는 것은 일반적으로.

CPU_TUPLE_COST(플로팅 가리키다)

처리 비용에 대한 플래너의 추정치를 설정합니다 쿼리 중 각 행. 기본값은 0.01입니다.

cpu_index_tuple_cost(플로팅 포인트)

처리 비용에 대한 플래너의 추정치를 설정합니다 인덱스 스캔 중 각 인덱스 항목. 기본값은입니다 0.005.

cpu_operator_cost(부동 가리키다)

가공 비용에 대한 플래너의 추정치를 설정합니다 각 연산자 또는 기능은 쿼리 중에 실행되었습니다. 그만큼 기본값은 0.0025입니다.

exply_cache_size(Integer)

유효 크기에 대한 플래너의 가정을 설정합니다 단일 쿼리에 사용할 수있는 디스크 캐시의 이것은 사용 비용의 추정치에 반영됩니다. 색인; 값이 높을수록 인덱스 스캔 가능성이 높아집니다 더 낮은 값이 사용되면 가능성이 높아집니다. 순차적 스캔이 사용됩니다. 이것을 설정할 때 둘 다 고려해야 할 매개 변수PostgreSQL의 공유 버퍼와 사용될 커널 디스크 캐시의 일부PostgreSQL데이터 파일. 또한 예상 동시 수를 고려하십시오 다른 테이블에 롤 토토가 필요하기 때문입니다 사용 가능한 공간을 공유하십시오. 이 매개 변수는 효과가 없습니다 에 할당 된 공유 메모리의 크기로​​PostgreSQL도 예약하지도 않습니다 커널 디스크 캐시; 추정에만 사용됩니다 목적. 기본값은 128 메가 바이트 (입니다.128MB).

18.6.3. 유전자 롤 토토 Optimizer

GENETIC QUERY OPTIMIZER (GEQO)는 알고리즘입니다. 휴리스틱 검색을 사용한 쿼리 계획. 이것은 계획을 줄입니다 복잡한 쿼리 (많은 관계에 합류하는 사람들)를위한 시간, 때로는 열등한 계획을 생산하는 비용 정상적인 철저한 검색 알고리즘에 의해 발견됩니다. 또한 GEQO 검색은 무작위 배정되므로 계획은 다를 수 있습니다 비 결정적으로. 자세한 내용은 참조49 장.

geqo(부울)

유전자 롤 토토 최적화를 활성화 또는 비활성화합니다. 이것 기본적으로 켜져 있습니다. 일반적으로 끄지 않는 것이 가장 좋습니다 생산에서; 그만큼geqo_threshold변수는 더 많은 것을 제공합니다 geqo의 사용을 제어하는 ​​과립 방법

geqo_threshold(Integer)

유전자 롤 토토 최적화를 사용하여 AT와의 롤 토토를 계획하십시오 최소한이 많은 것From항목 관련된. (A전체 외부 가입하다구성 수는 하나만 계산합니다From항목.) 기본값은 12입니다. 더 간단합니다 롤 토토는 일반적으로 결정 론적 사용이 가장 좋습니다. 철저한 플래너이지만 많은 테이블이있는 롤 토토 결정 론적 플래너는 너무 오래 걸립니다.

geqo_effort(Integer)

계획 시간과 롤 토토 사이의 상충 관계를 제어합니다 GEQO의 계획 품질. 이 변수는 정수가되어야합니다 1에서 10까지의 범위. 기본값은 5입니다. 더 큰 값은 롤 토토 계획을 수행하는 데 소요되는 시간을 증가시킵니다 또한 효율적인 롤 토토 계획이 가능성을 높입니다 선택됩니다.

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

geqo_pool_size(정수)

GEQO가 사용하는 풀 크기를 제어합니다. 유전자 집단의 개인 수. 해야합니다 두 개 이상이고 유용한 값은 일반적으로 100에서 1000. 0으로 설정되면 (기본 설정) 적절한 값은에 따라 선택됩니다geqo_effort및 테이블 수 롤 토토.

geqo_generations(정수)

GEQO가 사용하는 세대 수를 제어합니다 알고리즘의 반복 수입니다. 그럴 것입니다 적어도 하나이며 유용한 값은 수영장 크기. 0으로 설정된 경우 (기본 설정) 그런 다음 적절한 값이 선택됩니다.geqo_pool_size.

geqo_selection_bias(플로팅 포인트)

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

18.6.4. 다른 플래너 옵션

default_statistics_target(Integer)

테이블 열의 기본 통계 대상을 설정합니다 Q.Alter Table Set Statistics. 값 큰 값이 필요한 시간을 증가시킵니다분석, 그러나 품질을 향상시킬 수 있습니다 플래너의 추정치. 기본값은 100입니다. 자세한 내용 의 통계 사용에 대한 정보PostgreSQL롤 토토 플래너, 참조윈 토토.

제약 _exclusion(enum)

롤 토토 플래너의 테이블 제약 조건 사용을 제어합니다 롤 토토를 최적화합니다. 허용 값제약 _exclusionareon(모든 테이블에 대한 제약 조건 검사),OFF(제약 조건을 조사하지 않음), 그리고파티션(검사 상속 자식 테이블 및에 대한 제약 조건Union All서브 쿼리).파티션기본값입니다 환경.

이 매개 변수가 특정 테이블에 허용되면 플래너는 롤 토토 조건을 테이블의와 비교합니다.check제약 및 생략 조건이 모순되는 스캐닝 테이블 제약. 예를 들어:

테이블 PARIN (Key Integer, ...);
테이블 child1000을 만듭니다 (확인 (1000과 1999 사이의 키)) 상속 (부모);
테이블 child2000을 만듭니다 (확인 (2000 년에서 2999 년 사이의 키)) 상속 (부모);
...
선택 *에서 key = 2400;에서 부모 중에서 선택하십시오.

제약 제외가 활성화 된이select스캔하지 않습니다Child1000전혀. 이것은 향상 될 수 있습니다 상속을 구축하는 데 상속을 사용하는 경우 성능 분할 테이블.

현재, 제약 제외는 기본적으로 활성화되어 있습니다 종종 테이블을 구현하는 데 사용되는 경우에만 분할. 모든 테이블에 켜면 추가로 부과됩니다 간단하게 눈에 띄는 오버 헤드 계획 쿼리, 그리고 대부분은 단순한 것에 대한 혜택을 얻지 못할 것입니다. 쿼리. 분할 된 테이블이 없다면 완전히 끄는 것을 선호합니다.

참조섹션 5.9.4사용에 대한 자세한 내용은 제약 제외 및 분할.

cursor_tuple_fraction(플로팅 포인트)

a의 비율에 대한 플래너의 추정치를 설정합니다 검색 될 커서의 행. 기본값은 0.1입니다. 이 설정의 작은 값은 플래너를 향한 바이어스입니다 사용"빠른 시작"계획 커서, 처음 몇 행을 빨리 검색합니다 아마도 모든 행을 가져 오는 데 오랜 시간이 걸릴 것입니다. 더 큰 값은 총 추정에 더 중점을 둡니다 시간. 최대 1.0으로 커서가 계획됩니다 총액 만 고려할 때 일반 쿼리와 똑같습니다 첫 행이 얼마나 빨리 가질 수있는 예상 시간 배달.

from_collapse_limit​​(정수)

플래너는 하위 롤 토토를 상단 롤 토토로 병합합니다 결과From목록 이 많은 항목 이상이 없습니다. 작은 값이 줄어 듭니다 계획 시간이지만 열등한 쿼리 계획을 수립 할 수 있습니다. 그만큼 기본값은 8입니다. 자세한 내용은 참조섹션 14.3.

이 값 설정geqo_threshold또는 그 이상은 GEQO 플래너의 사용을 유발하여 비 결정적 계획. 보다섹션 18.6.3.

join_collapse_limit(정수)

플래너는 명시 적으로 다시 작성합니다Join구조물 (제외전체 조인s) 목록으로From더 이상 목록이있을 때마다 항목 이 많은 항목이 발생할 것입니다. 작은 값이 줄어 듭니다 계획 시간이지만 열등한 롤 토토 계획을 산출 할 수 있습니다.

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

이 값 설정geqo_threshold또는 그 이상은 GEQO 플래너의 사용을 유발하여 비 결정적 계획. 보다섹션 18.6.3.