이러한 구성 매개변수는 범퍼카 토토 최적화 프로그램이 선택한 범퍼카 토토 계획에 영향을 미치는 대략적인 방법을 제공합니다. 특정 범퍼카 토토에 대해 최적화 프로그램이 선택한 기본 계획이 최적이 아닌 경우 a임시해결책은 이러한 구성 매개변수 중 하나를 사용하여 최적화 프로그램이 다른 계획을 선택하도록 하는 것입니다. 옵티마이저가 선택한 계획의 품질을 향상시키는 더 나은 방법에는 플래너 비용 상수를 조정하는 것이 포함됩니다(참조)섹션 19.7.2), 실행 중분석수동으로 값 증가default_statistics_target구성 매개변수 및 다음을 사용하여 특정 열에 대해 수집된 통계량 증가테이블 세트 통계 변경.
enable_bitmapscan (부울)  범퍼카 토토 플래너의 비트맵 스캔 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_gathermerge (부울) 범퍼카 토토 플래너의 수집 병합 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_hashagg (부울) 범퍼카 토토 플래너의 해시된 집계 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_hashjoin (부울) 범퍼카 토토 플래너의 해시 조인 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_indexscan (부울)  범퍼카 토토 플래너의 인덱스 스캔 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_indexonlyscan (부울) 범퍼카 토토 플래너의 인덱스 전용 스캔 계획 유형 사용을 활성화 또는 비활성화합니다(참조PostgreSQL : 문서 : 10 : 11.11. 윈 토토 전용 스캔). 기본값은켜짐.
enable_material (부울) 범퍼카 토토 플래너의 구체화 사용을 활성화 또는 비활성화합니다. 구체화를 완전히 억제하는 것은 불가능하지만 이 변수를 끄면 정확성을 위해 필요한 경우를 제외하고 플래너가 구체화 노드를 삽입할 수 없습니다. 기본값은켜짐.
enable_mergejoin (부울) 범퍼카 토토 플래너의 병합-조인 계획 유형 사용을 활성화 또는 비활성화합니다. 기본값은켜짐.
enable_nestloop (부울) 범퍼카 토토 플래너의 중첩 루프 조인 계획 사용을 활성화 또는 비활성화합니다. 중첩 루프 조인을 완전히 억제하는 것은 불가능하지만 이 변수를 끄면 사용 가능한 다른 방법이 있는 경우 플래너가 이 변수를 사용하지 못하게 됩니다. 기본값은켜짐.
enable_seqscan (부울)  범퍼카 토토 플래너의 순차 스캔 계획 유형 사용을 활성화 또는 비활성화합니다. 순차 스캔을 완전히 억제하는 것은 불가능하지만 이 변수를 끄면 사용 가능한 다른 방법이 있는 경우 플래너가 이 변수를 사용하지 못하게 됩니다. 기본값은켜짐.
enable_sort (부울) 범퍼카 토토 플래너의 명시적 정렬 단계 사용을 활성화 또는 비활성화합니다. 명시적 정렬을 완전히 억제하는 것은 불가능하지만 이 변수를 끄면 사용 가능한 다른 방법이 있는 경우 플래너가 이를 사용하지 못하게 됩니다. 기본값은켜짐.
enable_tidscan (부울) 범퍼카 토토 플래너의 사용을 활성화 또는 비활성화합니다.TID스캔 계획 유형. 기본값은켜짐.
그비용이 섹션에 설명된 변수는 임의의 척도로 측정됩니다. 상대적인 값만 중요하므로 동일한 요소로 모두 확장하거나 축소해도 계획자의 선택에는 변화가 없습니다. 기본적으로 이러한 비용 변수는 순차적 페이지 가져오기 비용을 기반으로 합니다. 즉,seq_page_cost일반적으로 다음과 같이 설정됩니다.1.0및 기타 비용 변수는 이를 참조하여 설정됩니다. 그러나 원하는 경우 특정 머신의 실제 실행 시간(밀리초)과 같이 다른 척도를 사용할 수 있습니다.
안타깝게도 비용 변수의 이상적인 값을 결정하는 잘 정의된 방법은 없습니다. 이는 특정 설치가 수신하게 될 전체 쿼리 조합에 대한 평균으로 가장 잘 처리됩니다. 이는 단 몇 번의 실험을 토대로 이를 변경하는 것은 매우 위험하다는 것을 의미합니다.
seq_page_cost (부동 소수점) 일련의 순차적 가져오기의 일부인 디스크 페이지 가져오기 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 1.0입니다. 동일한 이름의 테이블스페이스 매개변수를 설정하여 특정 테이블스페이스의 테이블 및 인덱스에 대해 이 값을 재정의할 수 있습니다(참조)테이블스페이스 변경).
random_page_cost (부동 소수점) 순차적으로 가져오지 않은 디스크 페이지의 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 4.0입니다. 동일한 이름의 테이블스페이스 매개변수를 설정하여 특정 테이블스페이스의 테이블 및 인덱스에 대해 이 값을 재정의할 수 있습니다(참조)테이블스페이스 변경).
이 값을 기준으로 감소seq_page_cost시스템이 인덱스 스캔을 선호하게 됩니다. 이를 높이면 인덱스 스캔이 상대적으로 더 비싸 보이게 됩니다. 두 값을 함께 높이거나 낮춰 CPU 비용과 관련된 디스크 I/O 비용의 중요성을 변경할 수 있으며 이는 다음 매개변수로 설명됩니다.
기계적 디스크 저장소에 대한 무작위 액세스는 일반적으로 4배 순차 액세스보다 훨씬 비쌉니다. 그러나 인덱스 읽기와 같은 디스크에 대한 무작위 액세스의 대부분은 캐시에 있는 것으로 가정되므로 더 낮은 기본값(4.0)이 사용됩니다. 기본값은 무작위 읽기의 90%가 캐시될 것으로 예상하면서 무작위 액세스를 순차보다 40배 느리게 모델링하는 것으로 생각할 수 있습니다.
90% 캐시 비율이 작업 부하에 대한 잘못된 가정이라고 생각하는 경우, 무작위 저장소 읽기의 실제 비용을 더 잘 반영하도록 random_page_cost를 늘릴 수 있습니다. 그에 따라 데이터베이스가 전체 서버 메모리보다 작은 경우와 같이 데이터가 완전히 캐시에 있을 가능성이 있는 경우에는 Random_page_cost를 줄이는 것이 적절할 수 있습니다. 순차에 비해 무작위 읽기 비용이 낮은 스토리지(예: 솔리드 스테이트 드라이브)는 Random_page_cost에 대해 더 낮은 값을 사용하여 더 잘 모델링될 수도 있습니다(예:1.1.
시스템에서 설정할 수는 있지만random_page_cost이하seq_page_cost, 그렇게 하는 것은 물리적으로 합리적이지 않습니다. 그러나 데이터베이스가 RAM에 완전히 캐시된 경우 이를 동일하게 설정하는 것이 합리적입니다. 이 경우 페이지를 순서대로 터치해도 불이익이 없기 때문입니다. 또한 캐시량이 많은 데이터베이스에서는 이미 RAM에 있는 페이지를 가져오는 비용이 평소보다 훨씬 적기 때문에 CPU 매개변수에 비해 두 값을 모두 낮춰야 합니다.
cpu_tuple_cost (부동 소수점) 쿼리 중 각 행을 처리하는 데 드는 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 0.01입니다.
cpu_index_tuple_cost (부동 소수점) 인덱스 스캔 중 각 인덱스 항목을 처리하는 데 드는 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 0.005입니다.
cpu_operator_cost (부동 소수점) 쿼리 중에 실행된 각 연산자 또는 함수를 처리하는 데 드는 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 0.0025입니다.
parallel_setup_cost (부동 소수점) 병렬 작업자 프로세스 실행 비용에 대한 계획자의 추정치를 설정합니다. 기본값은 1000입니다.
parallel_tuple_cost (부동 소수점) 병렬 작업자 프로세스에서 다른 프로세스로 하나의 튜플을 전송하는 비용에 대한 플래너의 추정치를 설정합니다. 기본값은 0.1입니다.
min_parallel_table_scan_size (정수) 병렬 스캔을 고려하기 위해 스캔해야 하는 테이블 데이터의 최소량을 설정합니다. 병렬 순차 스캔의 경우 스캔되는 테이블 데이터의 양은 항상 테이블 크기와 동일하지만 인덱스를 사용하는 경우 스캔되는 테이블 데이터의 양은 일반적으로 적습니다. 기본값은 8MB입니다(8MB).
min_parallel_index_scan_size (정수) 병렬 스캔을 고려하기 위해 스캔해야 하는 인덱스 데이터의 최소량을 설정합니다. 병렬 인덱스 스캔은 일반적으로 전체 인덱스를 건드리지 않습니다. 이는 플래너가 관련 스캔에 의해 실제로 다루어질 것이라고 믿는 페이지 수입니다. 기본값은 512KB입니다(512kB).
유효_캐시_크기 (정수) 단일 쿼리에 사용할 수 있는 디스크 캐시의 유효 크기에 대한 플래너의 가정을 설정합니다. 이는 지수 사용 비용 추정에 반영됩니다. 값이 높을수록 인덱스 스캔이 사용될 가능성이 높아지고, 값이 낮을수록 순차 스캔이 사용될 가능성이 높아집니다. 이 매개변수를 설정할 때 두 가지를 모두 고려해야 합니다.PostgreSQL의 공유 버퍼와 다음 용도로 사용될 커널의 디스크 캐시 부분PostgreSQL데이터 파일. 그러나 일부 데이터는 두 위치 모두에 존재할 수 있습니다. 또한 사용 가능한 공간을 공유해야 하므로 서로 다른 테이블에서 예상되는 동시 범퍼카 토토 수를 고려하세요. 이 매개변수는에 의해 할당된 공유 메모리의 크기에 영향을 미치지 않습니다.PostgreSQL, 커널 디스크 캐시를 예약하지도 않습니다. 추정 목적으로만 사용됩니다. 또한 시스템은 범퍼카 토토 사이에 디스크 캐시에 데이터가 남아 있다고 가정하지 않습니다. 기본값은 4GB입니다(4GB).
유전자 쿼리 최적화 프로그램(GEQO)은 휴리스틱 검색을 사용하여 쿼리 계획을 수행하는 알고리즘입니다. 이는 복잡한 쿼리(많은 관계를 결합하는 쿼리)에 대한 계획 시간을 줄여 주지만 때로는 일반 완전 검색 알고리즘에서 찾은 것보다 열등한 계획을 생성하는 비용도 발생합니다. 자세한 내용은 참조PostgreSQL : 문서 : 10 : 59 장 유전자 토토 결과 옵티마이저.
geqo (부울)   유전자 범퍼카 토토 최적화를 활성화 또는 비활성화합니다. 이는 기본적으로 켜져 있습니다. 일반적으로 프로덕션에서는 끄지 않는 것이 가장 좋습니다.geqo_threshold변수는 GEQO를 보다 세부적으로 제어할 수 있습니다.
geqo_threshold (정수) 유전자 범퍼카 토토 최적화를 사용하여 최소한 이 개수의 범퍼카 토토를 계획하세요.발신관련 항목. (참고: a완전 외부 조인구조물은 하나만으로 계산됩니다.발신item.) 기본값은 12입니다. 간단한 범퍼카 토토의 경우 일반적으로 일반 완전 검색 플래너를 사용하는 것이 가장 좋지만, 테이블이 많은 범퍼카 토토의 경우 전체 검색에 너무 오랜 시간이 걸리며 종종 최적이 아닌 계획을 실행하는 데 따르는 페널티보다 더 오래 걸립니다. 따라서 범퍼카 토토 크기에 대한 임계값은 GEQO 사용을 관리하는 편리한 방법입니다.
geqo_effort (정수) GEQO에서 계획 시간과 쿼리 계획 품질 간의 균형을 제어합니다. 이 변수는 1에서 10 사이의 정수여야 합니다. 기본값은 5입니다. 값이 클수록 쿼리 계획을 수행하는 데 소요되는 시간이 늘어나지만 효율적인 쿼리 계획이 선택될 가능성도 높아집니다.
geqo_effort실제로 직접적으로 아무것도 하지 않습니다. GEQO 동작에 영향을 미치는 다른 변수의 기본값을 계산하는 데에만 사용됩니다(아래 설명). 원하는 경우 다른 매개변수를 직접 설정할 수도 있습니다.
geqo_pool_size (정수) GEQO가 사용하는 풀 크기, 즉 유전 집단의 개인 수를 제어합니다. 2개 이상이어야 하며 유용한 값은 일반적으로 100~1000입니다. 0(기본 설정)으로 설정된 경우 다음을 기준으로 적합한 값이 선택됩니다.geqo_effort및 범퍼카 토토의 테이블 수.
geqo_세대 (정수) GEQO가 사용하는 세대 수, 즉 알고리즘의 반복 횟수를 제어합니다. 하나 이상이어야 하며 유용한 값은 풀 크기와 동일한 범위에 있습니다. 0(기본 설정)으로 설정되면 다음을 기준으로 적합한 값이 선택됩니다.geqo_pool_size.
geqo_selection_bias (부동 소수점) GEQO에서 사용하는 선택 바이어스를 제어합니다. 선택 편향은 모집단 내의 선택 압력입니다. 값은 1.50에서 2.00 사이일 수 있습니다. 후자가 기본값입니다.
geqo_seed (부동 소수점) GEQO가 조인 순서 검색 공간을 통해 무작위 경로를 선택하는 데 사용하는 난수 생성기의 초기 값을 제어합니다. 값의 범위는 0(기본값)부터 1까지입니다. 값을 변경하면 탐색된 조인 경로 세트가 변경되며 결과적으로 더 좋거나 나쁜 최상의 경로가 발견될 수 있습니다.
default_statistics_target (정수) 다음을 통해 설정된 열별 목표 없이 테이블 열에 대한 기본 통계 목표를 설정합니다.테이블 세트 통계 변경. 값이 클수록 수행하는 데 필요한 시간이 늘어납니다.분석, 그러나 플래너의 추정 품질을 향상시킬 수 있습니다. 기본값은 100입니다. 통계 사용에 대한 자세한 내용은PostgreSQL범퍼카 토토 플래너, 참조PostgreSQL : 문서 : 10 : 14.2. 플래너가 사용하는 젠 토토.
constraint_exclusion (열거형)  범퍼카 토토를 최적화하기 위해 범퍼카 토토 플래너의 테이블 제약 조건 사용을 제어합니다. 허용되는 값은constraint_exclusion아르켜짐(모든 테이블의 제약 조건 검사),꺼짐(절대 제약 조건을 검사하지 않음) 및파티션(상속 하위 테이블에 대해서만 제약 조건을 검사하고유니온 전체하위 쿼리).파티션기본 설정입니다. 성능 향상을 위해 상속 및 분할된 테이블과 함께 사용되는 경우가 많습니다.
이 매개변수가 특정 테이블에 대해 허용하는 경우 플래너는 범퍼카 토토 조건을 테이블의 조건과 비교합니다.확인제약조건을 적용하고 조건이 제약조건과 모순되는 스캔 테이블을 생략합니다. 예를 들면:
CREATE TABLE 상위(키 정수, ...); CREATE TABLE child1000(확인(1000에서 1999 사이의 키)) INHERITS(부모); CREATE TABLE child2000(확인(2000에서 2999 사이의 키)) INHERITS(부모); ... SELECT * FROM 상위 WHERE 키 = 2400;
제약조건 제외가 활성화되면 이선택스캔하지 않습니다어린이1000전혀 성능이 향상됩니다.
현재 제약 조건 제외는 테이블 파티셔닝을 구현하는 데 자주 사용되는 경우에만 기본적으로 활성화됩니다. 모든 테이블에 대해 이 기능을 켜면 간단한 쿼리에서 상당히 눈에 띄는 추가 계획 오버헤드가 발생하며 대부분의 경우 간단한 쿼리에서는 아무런 이점도 얻을 수 없습니다. 파티션을 나눈 테이블이 없으면 완전히 끄는 것이 좋습니다.
참조섹션 5.10.4제약조건 제외 및 파티셔닝 사용에 대한 자세한 내용을 확인하세요.
cursor_tuple_fraction (부동 소수점) 검색될 커서 행의 일부에 대한 플래너의 추정치를 설정합니다. 기본값은 0.1입니다. 이 설정의 값이 작을수록 플래너는 사용 쪽으로 편향됩니다.“빠른 시작”커서에 대한 계획은 처음 몇 행을 빠르게 검색하는 반면 모든 행을 가져오는 데는 오랜 시간이 걸릴 수 있습니다. 값이 클수록 총 예상 시간이 더 강조됩니다. 최대 설정 1.0에서 커서는 첫 번째 행이 얼마나 빨리 전달될지 고려하지 않고 총 예상 시간만 고려하여 일반 쿼리와 똑같이 계획됩니다.
from_collapse_limit (정수) 플래너는 결과가 다음과 같은 경우 하위 쿼리를 상위 쿼리로 병합합니다.발신목록에는 이만큼의 항목만 있을 것입니다. 값이 작을수록 계획 시간은 줄어들지만 쿼리 계획이 열악해질 수 있습니다. 기본값은 8입니다. 자세한 내용은 참조PostgreSQL : 문서 : 10 : 14.3. 명백한 토토 핫 조항으로 플래너 제어.
이 값을 다음으로 설정 중geqo_threshold이상은 GEQO 플래너 사용을 트리거하여 최적이 아닌 계획을 초래할 수 있습니다. 참조섹션 19.7.3.
join_collapse_limit (정수) 계획자는 명시적으로 다시 작성합니다가입구조물(제외전체 조인s)를 목록으로발신이 개수 이하의 항목 목록이 나올 때마다 항목. 값이 작을수록 계획 시간은 줄어들지만 쿼리 계획이 열악해질 수 있습니다.
기본적으로 이 변수는 다음과 동일하게 설정됩니다.from_collapse_limit, 이는 대부분의 용도에 적합합니다. 1로 설정하면 명시적인 재정렬이 방지됩니다.가입s. 따라서 쿼리에 지정된 명시적 조인 순서는 관계가 조인되는 실제 순서가 됩니다. 쿼리 플래너가 항상 최적의 조인 순서를 선택하는 것은 아니기 때문에 고급 사용자는 이 변수를 일시적으로 1로 설정한 다음 원하는 조인 순서를 명시적으로 지정할 수 있습니다. 자세한 내용은 참조PostgreSQL : 문서 : 10 : 14.3. 명백한 토토 핫 조항으로 플래너 제어.
이 값을 다음으로 설정 중geqo_threshold이상은 GEQO 플래너 사용을 트리거하여 최적이 아닌 계획을 초래할 수 있습니다. 참조섹션 19.7.3.
force_parallel_mode (열거형) 성능상의 이점이 예상되지 않는 경우에도 테스트 목적으로 병렬 범퍼카 토토를 사용할 수 있습니다. 허용되는 값은force_parallel_mode아르꺼짐(성능 향상이 예상되는 경우에만 병렬 모드를 사용하십시오),켜짐(안전하다고 생각되는 모든 범퍼카 토토에 대해 강제 병렬 범퍼카 토토 수행) 및회귀(좋아요켜짐, 그러나 아래에 설명된 대로 추가 동작 변경이 있습니다.
더 구체적으로, 이 값을 다음으로 설정합니다.켜짐다음을 추가하겠습니다집결노드를 안전해 보이는 범퍼카 토토 계획의 맨 위에 추가하여 범퍼카 토토가 병렬 작업자 내부에서 실행되도록 합니다. 병렬 작업자를 사용할 수 없거나 사용할 수 없는 경우에도 병렬 범퍼카 토토 컨텍스트에서 금지되는 하위 트랜잭션 시작과 같은 작업은 플래너가 이로 인해 범퍼카 토토가 실패할 것이라고 생각하지 않는 한 금지됩니다. 이 옵션을 설정할 때 실패하거나 예상치 못한 결과가 발생하는 경우 범퍼카 토토에서 사용되는 일부 기능을 표시해야 할 수 있습니다.병렬 안전하지 않음(또는 아마도,병렬 제한됨).
이 값을 다음으로 설정 중회귀다음으로 설정한 것과 모두 동일한 효과를 가집니다.켜짐그리고 자동화된 회귀 테스트를 용이하게 하기 위한 몇 가지 추가 효과. 일반적으로 병렬 작업자의 메시지에는 이를 나타내는 컨텍스트 줄이 포함되지만 설정은회귀은 출력이 비병렬 실행과 동일하도록 이 줄을 억제합니다. 또한,집결이 설정으로 계획에 추가된 노드는 다음에 숨겨져 있습니다.설명출력이 이 설정을 바꾸면 얻을 수 있는 것과 일치하도록 출력꺼짐.