어떤 식 으로든 데이터베이스 시스템의 동작. 여기 우리 설정 방법을 설명하면 다음 하위 섹션이 그들 각각에 대해 토론하십시오.
모든 매개 변수 이름은 대소 문자를 사용하지 않습니다. 모든 매개 변수 네 가지 유형 중 하나의 부울, 정수, 플로팅 값을 취합니다. 포인트, 아래에 설명 된대로 문자열. 부울 값은on, off, true, false, 예, 아니오, 1, 0(사례에 민감하지 않음) 또는 이들의 부정확 한 접두사.
이 젠 토토을 설정하는 한 가지 방법은 파일을 만드는 것입니다postgresql.conf데이터 디렉토리 (예 :/usr/local/pgsql/data). 의 예 이 파일은 다음과 같습니다.
# 이것은 주석입니다 log_connections = 예입니다 syslog = 2보시다시피, 젠 토토은 한 줄 당 하나입니다. 사이의 동일한 부호 이름과 값은 선택 사항입니다. 공백은 중요하지 않습니다 줄은 무시됩니다. 해시 마크 ("#") 어디서나 의견을 소개합니다.
postmaster가있을 때마다 젠 토토 파일이 다시 표시됩니다 Sighup 신호를받습니다. 이 신호는 또한 모든 사람에게 전파됩니다 백엔드 프로세스를 실행하여 실행 세션이 새로운 것을 얻을 수 있도록 기본. 또는 신호를 하나만 보낼 수 있습니다 백엔드 프로세스 직접.
이러한 젠 토토 매개 변수를 설정하는 두 번째 방법은 제공하는 것입니다. 우체국 장에 대한 명령 줄 옵션으로
postmaster -c log_connections = 예 -c syslog = 2이전 예와 동일한 효과를 갖습니다. 명령 줄 옵션은 충돌하는 설정을 무시합니다postgresql.conf.
때때로 명령 줄 젠 토토을 제공하는 것이 유용합니다. 하나의 특정 백엔드 세션에만. 환경 변수pgoptions이 목적으로 사용될 수 있습니다 클라이언트 측 :
Env Pgoptions = '-C geqo = Off'PSQL(이것은 단지 모든 클라이언트 응용 프로그램에서 작동합니다PSQL.) 이것은 작동하지 않습니다 서버가 있으면 반드시 고정 된 젠 토토의 경우 포트 번호와 같은 시작.
마지막으로 일부 젠 토토은 개별 SQL에서 변경할 수 있습니다 와의 세션SET예
=ENABLE_SEQSCAN을 OFF로 설정하십시오;SQL 명령 언어 참조를 참조하십시오. 통사론.
비용에 대한 쿼리 최적화기의 추정치를 설정합니다 인덱스 스캔 중 각 인덱스 튜플 처리. 이것은 순차 페이지 비용의 일부로 측정 술책.
최적화 비용 추정치를 설정합니다 WHERE 절에서 각 연산자를 처리합니다. 이것은 순차 페이지 비용의 일부로 측정 술책.
Query Optimizer의 비용 추정치를 설정합니다 쿼리 중 각 튜플을 처리합니다. 이것은 다음과 같이 측정됩니다 순차 페이지 페치 비용의 일부.
효과적인 것에 대한 Optimizer의 가정을 설정합니다 디스크 캐시의 크기 (즉, 사용될 커널 디스크 캐시Postgres데이터 파일). 이것은 일반적으로 8KB 인 디스크 페이지에서 측정됩니다 모든 것.
쿼리 플래너의 사용을 활성화 또는 비활성화합니다 해시-조인 플랜 유형. 기본값이 켜져 있습니다. 이것은 대부분입니다 쿼리 플래너를 디버깅하는 데 유용합니다.
쿼리 플래너의 인덱스 사용을 활성화 또는 비활성화합니다 스캔 계획 유형. 기본값이 켜져 있습니다. 이것은 주로 유용합니다 쿼리 플래너를 디버깅하려면
쿼리 플래너의 사용을 활성화 또는 비활성화합니다 병합-조명 계획 유형. 기본값이 켜져 있습니다. 이것은 대부분입니다 쿼리 플래너를 디버깅하는 데 유용합니다.
쿼리 플래너의 사용을 활성화 또는 비활성화합니다 중첩 루프 가입 계획. 억제하는 것은 불가능합니다 중첩 루프는 완전히 결합되지만이 변수를 끕니다 플래너가 하나를 사용하지 못하게합니다. 다른 방법을 사용할 수 있습니다. 기본값이 켜져 있습니다. 이것은 대부분입니다 쿼리 플래너를 디버깅하는 데 유용합니다.
쿼리 플래너의 사용을 활성화 또는 비활성화합니다 순차적 스캔 계획 유형. 억제하는 것은 불가능합니다 순차적 스캔은 완전히 스캔되지만이 변수를 끄십시오 플래너가 하나를 사용하지 못하게합니다. 다른 방법을 사용할 수 있습니다. 기본값이 켜져 있습니다. 이것은 대부분입니다 쿼리 플래너를 디버깅하는 데 유용합니다.
쿼리 플래너의 사용을 활성화 또는 비활성화합니다 명백한 정렬 단계. 억제하는 것은 불가능합니다 명백한 분류는 완전히 분류되지만이 변수를 끄십시오 플래너가 하나를 사용하지 못하게합니다. 다른 방법을 사용할 수 있습니다. 기본값이 켜져 있습니다. 이것은 대부분입니다 쿼리 플래너를 디버깅하는 데 유용합니다.
쿼리 플래너의 TID 사용을 활성화 또는 비활성화합니다 스캔 계획 유형. 기본값이 켜져 있습니다. 이것은 주로 유용합니다 쿼리 플래너를 디버깅하려면
유전자 쿼리 최적화를 활성화 또는 비활성화합니다 쿼리 계획을 시도하는 알고리즘입니다 철저한 검색없이. 이것은 기본적으로 켜져 있습니다. 보다 또한 다양한 GEQO_ 설정.
유전자 쿼리의 다양한 튜닝 매개 변수 최적화 알고리즘 : 풀 크기는 수입니다 한 인구의 개인. 유효한 값은 사이에 있습니다 128 및 1024. 0으로 설정된 경우 (기본값) 풀 크기 2^(qs+1), 여기서 QS는 쿼리가 취해집니다. 노력은 a를 계산하는 데 사용됩니다 세대의 기본값. 유효한 값은 1에서 80, 40 기본값입니다. 세대가 지정합니다 알고리즘의 반복 수. 숫자는 있어야합니다 긍정적 인 정수. 0이 지정되면 노력 * log2 (poolsize)가 사용됩니다. 알고리즘의 실행 시간은입니다 풀 크기의 합에 대략 비례합니다 세대. 선택 바이어스는 선택적 압력입니다 인구 내에서. 값은 1.50 ~ 2.00 일 수 있습니다. 후자는 기본값입니다. 임의의 씨앗을 설정할 수 있습니다 알고리즘에서 재현 가능한 결과를 얻으십시오. 그렇다면 -1로 설정 한 다음 알고리즘이 동작합니다 비 결정적으로.
유전자 쿼리 최적화를 사용하여 AT와의 쿼리를 계획하십시오 최소한이 많은 사람들이 관련된 항목의 많은 것입니다. (가입 구성은 항목에서 하나만 계산합니다.) 기본값은 다음과 같습니다. 11. 간단한 쿼리의 경우 일반적으로 사용하는 것이 가장 좋습니다. 결정 론적, 철저한 플래너.
the키 세트 쿼리 최적화(KSQO)는 쿼리를 유발합니다 조항에 포함 된 쿼리를 변환하는 플래너 많은 또는 조항과 조항 (예 :어디에 (a = 1 및 b = 2) 또는 (a = 2 및 b = 3) ...)) 질문. 이 메소드는 기본값보다 빠를 수 있습니다 구현이지만 반드시 정확히 제공 할 필요는 없습니다 Union이 암시 적으로 SELECT를 추가하기 때문에 동일한 결과 동일한 출력 행을 제거하기위한 고유 한 절. KSQO 와 같은 제품으로 작업 할 때 일반적으로 사용됩니다.Microsoft Access이 양식의 쿼리를 생성하는 경향이 있습니다.
KSQO 알고리즘은 절대적으로 필수적이었습니다 많은 또는 조항과 조항이 있지만Postgres7.0 이상 표준 플래너는 이러한 쿼리를 상당히 성공적으로 처리합니다. 따라서 기본값이 꺼져 있습니다.
Query Optimizer의 비용에 대한 추정치를 설정합니다. 비 순차적으로 가져온 디스크 페이지. 이것은 a로 측정됩니다 순차적 페이지 페치 비용의 배수.
참고 :불행히도 잘 정의되지 않았습니다 가족을위한 이상적인 가치를 결정하는 방법"비용"정당한 변수 설명. 당신은 실험하고 공유하는 것이 좋습니다 결과.
다양한 주장 점검을 켭니다. 이것은 디버깅입니다 지원. 이상한 문제 나 충돌이 발생하는 경우 노출 될 수 있으므로 이것을 켜고 싶을 수도 있습니다. 프로그래밍 실수. 이 옵션을 사용하려면 매크로use_assert_checkingPostgres가 구축 될 때 정의 됨 (구성 옵션 참조--enable-cassert). 참고debug_assertions기본값 켜기 Postgres가 이런 식으로 구축 된 경우.
이 값이 높을수록 더 높을수록 더"디버깅"다양한 종류의 출력입니다 작동 중 서버 로그에서 생성됩니다. 이 옵션 기본적으로 0이므로 디버깅 출력이 없습니다. 값 약 4 명까지 현재 의미가 있습니다.
이 플래그를 사용하면 다양한 디버깅 출력이 전송 될 수 있습니다 서버 로그에. 실행 된 각 쿼리에 대해 인쇄물도 인쇄합니다 쿼리 텍스트, 결과 구문 분석 트리, 쿼리 재 작성자 출력 또는 실행 계획debug_pretty_print이 디스플레이를 들여 보내십시오 더 읽기 쉽지만 훨씬 긴 출력 형식을 생성합니다. 환경debug_level0 이상 이 깃발 중 일부를 암시 적으로 켭니다.
기본적으로 연결 로그는 IP 주소 만 표시합니다 연결 호스트의. 호스트를 보여 주려면 이름을 켤 수 있지만 호스트에 따라 이름 해상도 설정은 무시할 수없는 것을 부과 할 수 있습니다 성능 페널티. 이 젠 토토은에서만 설정할 수 있습니다 서버 시작.
각각의 성공에 대해 알리는 라인을 인쇄합니다 서버 로그에 연결. 기본적으로 꺼져 있습니다. 아마도 매우 유용 할 것입니다. 이 젠 토토 은만 할 수 있습니다 서버 시작에서 설정해야합니다.
각 서버 로그 메시지가 프로세스 ID와 함께 접두사를 접두사합니다 백엔드 프로세스의. 이것은 어느 것을 정리하는 데 유용합니다 메시지는 어떤 연결과 관련이 있습니다. 기본값은입니다 끄다.
각 서버 로그 메시지를 젠 토토 스탬프로 접두사합니다. 그만큼 기본값이 꺼져 있습니다.
각 쿼리의 경우, 성능 통계를 작성하십시오 서버 로그의 각 모듈. 이것은 원유입니다 프로파일 링 악기.
연결 호스트의 나가는 포트 번호를 보여줍니다 연결 로그 메시지에서. 당신은 추적 할 수 있습니다 포트 번호는 어떤 사용자가 시작했는지 알아 봅니다 연결. 그 외에는 쓸모가 없습니다 따라서 기본적으로 꺼집니다. 이 젠 토토은에서만 설정할 수 있습니다 서버 시작.
Postgres허용 사용Syslog벌채 반출. 이 옵션이 1으로 설정되면 메시지는 모두로 이동합니다. Syslog 및 표준 출력. 2 개의 보내기 설정 syslog에만 출력. (일부 메시지는 여전히 진행됩니다 표준 출력/오류.) 기본값은 0이므로 의미합니다 Syslog가 꺼져 있습니다. 이 옵션은 서버에서 설정해야합니다 시작.
syslog를 사용하려면Postgres로 젠 토토되어야합니다--enable-syslog젠 토토.
이 젠 토토은를 결정합니다.Syslog "시설"Syslog 일 때 사용됩니다 활성화. Local0, Local1, Local2에서 선택할 수 있습니다. Local3, Local4, Local5, Local6, Local7; 기본값은입니다 로컬0. 시스템 문서도 참조 참조Syslog.
Syslog에 로깅이 활성화되면이 옵션이 가능합니다 식별하는 데 사용되는 프로그램 이름을 결정합니다PostgreSQL메시지Syslog로그 메시지. 기본값은"Postgres".
듣기andNotify명령.
이것은 밀리 초, 기다리는 시간입니다. 교착 상태가 있는지 확인하기 전에 자물쇠에 상태 여부. 교착 상태 수표는 비교적입니다 느리기 때문에 우리가 기다릴 때마다 실행하고 싶지 않습니다. 잠그다. 우리는 (낙관적으로?) 교착 상태가 아니라고 가정합니다 생산 응용 분야에서 일반적으로 기다리십시오 질문을 시작하기 전에 잠깐 잠그십시오 잠금 해제 될 수 있는지 여부. 이 값을 증가시킵니다 불필요한 교착 상태에서 낭비되는 시간을 줄입니다 점검하지만 실제 교착 상태 오류에 대한보고가 느려집니다. 기본값은 1000 (즉, 1 초)이며 아마도 당신이 실제로 원하는 가장 작은 가치에 대해. a 로드 된 서버를 많이 올릴 수 있습니다. 이상적으로 설정은 일반적인 거래 시간을 초과해야합니다. 자물쇠가 해제 될 확률을 향상시키기 위해 웨이터가 교착 상태를 확인하기로 결정하기 전에. 이것 젠 토토은 서버 시작에서만 설정할 수 있습니다.
이 젠 토토이 켜져 있으면Postgres백엔드는를 사용합니다.fsync ()시스템 호출 몇 가지 업데이트가 물리적으로 작성되었는지 확인하는 장소 디스크와 커널 버퍼에 매달리지 마십시오. 은닉처. 이것은 데이터베이스의 가능성을 증가시킵니다 작동 후에도 설치가 가능합니다 시스템 또는 하드웨어 충돌. (충돌 데이터베이스 서버 자체는아님이 고려 사항에 영향을 미칩니다.)
그러나이 작업이 느려집니다Postgres운영 체제를 차단하고 기다려야하는 포인트 버퍼를 플러시합니다. 없이fsync, 운영 체제가 허용됩니다 버퍼링, 정렬 및 글을 지연시키는 데 최선을 다하면 상당한 성능이 증가 할 수 있습니다. 그러나 시스템이 충돌하면 마지막 결과의 결과가 부분적으로 또는 전체적으로 저지른 거래가 손실 될 수있는 사람은 거의 없습니다. 최악의 경우, 복귀 할 수없는 데이터 손상은 할 수 있습니다 발생하다.
이 젠 토토은에서 영원한 토론의 주제입니다.Postgres사용자 및 개발자 커뮤니티. 어떤 사람들은 항상 그것을 꺼내고 일부는 꺼져 있습니다 대량 부하에 대해서만 끄십시오. 무언가 잘못되면 지점을 다시 시작하면 일부는 그대로 두십시오. 안전한쪽에 있습니다. 안전한면이기 때문에 ON도 기본값입니다. 당신이 당신의 운영을 신뢰한다면 시스템, 하드웨어 및 유틸리티 회사 (또는 더 나은 UPS), 당신은 fsync를 비활성화하고 싶을 것입니다.
성과 페널티를 언급해야합니다 fsyncs를하는 것은 상당히 적습니다Postgres버전 7.1보다 버전 7.1 사전 릴리스. 이전에 fsyncs를 억제 한 경우 성능 문제로 인해 원할 수도 있습니다 당신의 선택을 재고하십시오.
이 젠 토토은 서버 시작 또는에서만 설정할 수 있습니다.postgresql.conf파일.
Kerberos 서버 키 파일의 위치를 설정합니다. 보다섹션 4.2.2자세한 내용.
동시 연결 수를 결정합니다 데이터베이스 서버가 허용합니다. 기본값은 32입니다 또한이 값의 하드 상한 상한도. 일반적으로 1024입니다 (두 숫자는 모두 변경 될 수 있습니다 서버 컴파일). 이 매개 변수는에서만 설정할 수 있습니다 서버 시작.
최대 표현식 중첩 깊이를 설정합니다 파서는 받아 들일 것입니다. 기본값은 충분히 높습니다 일반적인 쿼리이지만 필요한 경우 올릴 수 있습니다. (하지만 너무 높이 올리면 위험을 감수합니다. 스택 오버플로로 인한 백엔드 충돌.)
서버가 듣는 TCP 포트; 기본적으로 5432. 이 젠 토토은 서버 시작시에만 설정할 수 있습니다.
데이터베이스를 공유 메모리 버퍼 수를 설정합니다 서버가 사용됩니다. 기본값은 64입니다. 각 버퍼는입니다 일반적으로 8192 바이트. 이 젠 토토은에서만 설정할 수 있습니다 서버 시작.
우체국 장을 조용히 실행합니다. 이 옵션이 설정된 경우 우체국 장은 자동으로 백그라운드에서 실행됩니다 TTY를 제어하는 것은 분리되므로 메시지가 없습니다 Stdout 또는 Stderr에 작성되었습니다 (우체국과 동일한 효과 -S 옵션). Syslog와 같은 일부 로깅 시스템이 아니라면 활성화,이 옵션을 사용하는 것은 그것이 만들어지기 때문에 권장하지 않습니다 오류 메시지를 볼 수 없습니다.
내부에서 사용할 메모리의 양을 지정합니다. 임시 디스크에 의지하기 전에 정렬 및 해시 파일. 값은 킬로 바이트 및 기본값으로 지정됩니다 512 킬로 바이트까지. 복잡한 쿼리의 경우 몇 가지에 유의하십시오 정렬 및/또는 해시는 병렬로 실행 중일 수 있습니다 각각은 이것만큼 많은 메모리를 사용할 수 있습니다. 값은 데이터를 넣기 전에 지정합니다 임시 파일. 그리고 각 달리기를 잊지 마십시오 백엔드는 하나 이상의 종류를 수행 할 수 있습니다. 그래서 총 필요한 메모리 공간은 Sort_mem.
이것은 상속 시맨틱을 제어합니다 하위 테이블이 고려에 포함되어 있는지 여부 기본적으로 다양한 명령. 이것은 사실이 아니었다 7.1 이전 버전. 오래된 행동이 필요하다면 이 변수를 끄는 것으로 설정할 수 있지만 장기적으로는 응용 프로그램을 변경하도록 권장전용제외 할 키워드 하위 테이블. SQL 언어 참조 및 참조사용자 안내서더 많은 것 상속에 관한 정보.
활성화SSL연결. 읽어주세요토토 커뮤니티 : 문서 : 7.1 : SSL과 TCP/IP 연결을 보호합니다전 이것을 사용합니다. 기본값이 꺼져 있습니다.
이것이 사실이라면 서버가 TCP/IP를 허용합니다. 사이. 그렇지 않으면 로컬 유닉스 도메인 소켓 만 연결이 허용됩니다. 기본적으로 꺼져 있습니다. 이것 젠 토토은 서버 시작에서만 설정할 수 있습니다.
UNIX-Domain 소켓의 디렉토리를 지정합니다Postmasteris 클라이언트 응용 프로그램의 연결을 듣습니다. 그만큼 기본값은 일반적으로/tmp, 그러나 빌드 시간에 변경할 수 있습니다.
UNIX 도메인 소켓의 그룹 소유자를 설정합니다. (그만큼 소켓의 사용자 소유는 항상 시작하는 사용자입니다. 우체국 장.) 젠 토토과 함께unix_socket_permissions이것은 할 수 있습니다 추가 액세스 제어 메커니즘으로 사용하십시오 이 소켓 유형. 기본적으로 이것은 빈 문자열입니다. 현재 사용자의 기본 그룹을 사용합니다. 이것 옵션은 서버 시작에서만 설정할 수 있습니다.
UNIX 도메인 소켓의 액세스 권한을 설정합니다. UNIX 도메인 소켓은 일반적인 UNIX 파일 시스템을 사용합니다 권한 세트. 젠 토토 값은 에 의해 허용되는 양식의 숫자 모드 사양CHMODandUmask시스템 호출. (관습을 사용하려면 옥탈 형식 숫자는 a로 시작해야합니다.0(0).)
기본 권한은입니다.0777, 누구나 연결할 수 있습니다. 합리적인 대안은입니다.0770(사용자 및 그룹 만 참조 참조unix_socket_group) 및0700(사용자 만). (실제로 UNIX 소켓, 쓰기 권한 문제 만 있습니다. 읽기 또는 실행을 설정하거나 취소 할 필요는 없습니다 권한.)
이 액세스 제어 메커니즘은 독립적입니다 에 설명 된 것)4 장.
이 젠 토토은 서버 시작시에만 설정할 수 있습니다.
TCP/IP 호스트 이름 또는 주소를 지정합니다.Postmaster듣는 것입니다 클라이언트 애플리케이션의 연결. 기본값 젠 토토된 모든 주소에 대한 청취 (포함 Localhost).
참조토토 사이트 추천 : 문서 : 7.1 : WAL 구성WAL 튜닝에 대한 자세한 내용.
자동 WAL 체크 포인트 간의 최대 거리는 IN 로그 파일 세그먼트 (각 세그먼트는 일반적으로 16 메가 바이트입니다). 이 젠 토토은 서버 시작 또는에서만 설정할 수 있습니다.postgresql.conf파일.
자동 WAL 체크 포인트 간의 최대 시간, IN 초. 이 젠 토토은 서버 시작 또는 에서postgresql.conf파일.
WAL에 커밋 레코드를 작성하는 사이의 시간 지연 버퍼를 디스크로 버퍼하고 플러싱합니다 마이크로 초. 0이 아닌 지연으로 인해 여러 가지가 허용됩니다 트랜잭션은 하나의 fsync만으로 커밋됩니다 시스템로드는 추가 거래보다 충분히 높습니다 주어진 간격 내에서 커밋 할 준비가 되십시오. 그러나 다른 거래가되지 않으면 지연이 낭비됩니다. 커밋 준비. 따라서 지연은 수행됩니다 적어도 Commit_Siplings 다른 거래는 활성화됩니다 백엔드가 커밋을 작성한 순간 기록.
동시 공개 트랜잭션의 최소 수 Commit_Delay 지연을 수행하기 전에 필요합니다. 에이 더 큰 가치는 다른 거래는 그 동안 커밋 할 준비가됩니다 지연 간격.
WAL의 공유 메모리에 디스크 페이지 버퍼 수 통나무. 이 젠 토토은 서버 시작시에만 설정할 수 있습니다.
0이 아닌 경우 WAL 관련 디버깅 출력을 켭니다 표준 오류.
사전에 생성되는 로그 파일 수 체크 포인트 시간. 이 젠 토토은 서버에서만 설정할 수 있습니다 시작하거나postgresql.conf파일.
WAL 업데이트를 디스크로 강제하는 데 사용되는 방법. 가능한 값은fsync(전화 각 커밋에서 fsync (),fdatasync(각각 fdatasync ()를 호출합니다 저지르다),Open_Sync(WAR WAL Open () 젠 토토 o_sync) 또는가있는 파일Open_Datasync젠 토토 O_DSYNC). 이러한 모든 선택을 사용할 수있는 것은 아닙니다 모든 플랫폼에서. 이 젠 토토은 서버에서만 설정할 수 있습니다 시작하거나postgresql.conf파일.
편의를 위해 단일 문자 옵션 스위치도 있습니다 많은 매개 변수에 사용할 수 있습니다. 그것들은 다음에 설명되어 있습니다 다음 표.
표 3-1. 짧은 젠 토토 키
짧은 젠 토토 | 동등한 | 비고 |
---|---|---|
-Bx | shared_buffers =x | |
-dx | debug_level =x | |
-f | fsync = off | |
-hx | virtual_host =x | |
-i | tcpip_socket = on | |
-Kx | unix_socket_directory =x | |
-l | ssl = on | |
-nx | max_connections =x | |
-px | 포트 =x | |
-fi, -fh, -fm, -fn, -fs, -ft | enable_indexscan = off, enable_hashjoin = off, enable_mergejoin = off, enable_nestloop = off, enable_seqscan = off, enable_tidscan = off | * |
-sX | Sort_mem =x | * |
-s | show_query_stats = 에 | * |
-tpa, -tpl, -te | show_parser_stats = on, show_planner_stats = on, show_executor_stats = on | * |
postmaster -o '-s 1024 -s'또는 viapgoptions클라이언트 측에서, 위에서 설명한대로.