이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다사설 토토 PostgreSQL : 문서 : 17 : 19.4. 자원 소비버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

19.4. 자원 소비

19.4.1. 메모리

shared_buffers (Integer)

공유 메모리 버퍼에 데이터베이스 서버가 토토 커뮤니티하는 메모리 양을 설정합니다. 기본값은 일반적으로 128 메가 바이트입니다 (128MB)이지만 커널 설정이 지원되지 않으면 더 적을 수 있습니다 (initdb). 이 설정은 128 킬로 바이트 이상이어야합니다.blcksz최소값을 변경하십시오.) 그러나 가장 좋은 성능을 위해서는 최소값보다 상당히 높은 설정이 필요합니다. 이 매개 변수는 서버 시작에서만 설정할 수 있습니다.

1GB 이상의 RAM이있는 전용 데이터베이스 서버가있는 경우의 합리적인 시작 값shared_buffers는 시스템의 메모리의 25%입니다. 큰 설정조차도가있는 워크로드가 있습니다.shared_buffers효과적이지만PostgreSQL또한 운영 체제 캐시에 의존하므로 RAM의 40% 이상을 할당 할 것 같지 않습니다.shared_buffers는 적은 양보다 더 잘 작동합니다. 더 큰 설정shared_buffers일반적으로 해당 증가가 필요합니다max_wal_size, 더 오랜 시간 동안 많은 양의 신규 또는 변경된 데이터를 작성하는 프로세스를 확산시키기 위해

1GB 미만의 RAM이있는 시스템에서는 운영 체제를위한 적절한 공간을 떠나기 위해 RAM의 작은 비율이 적절합니다. 또한 창에서 큰 값shared_buffers효과적이지 않습니다. 설정을 상대적으로 낮게 유지하고 운영 체제 캐시를 대신 토토 커뮤니티하는 더 나은 결과를 찾을 수 있습니다.shared_buffersWindows 시스템에서 일반적으로 64MB에서 512MB입니다.

migne_pages (enum)

거대한 메모리 페이지 토토 커뮤니티을 활성화/비활성화합니다. 유효한 값은try(기본값),onoff.

현재이 기능은 Linux에서만 지원됩니다. 설정이 설정된 다른 시스템에서 설정이 무시됩니다try.

거대한 페이지를 토토 커뮤니티하면 더 작은 페이지 테이블과 메모리 관리에 소요되는 CPU 시간이 줄어들어 성능이 향상됩니다. 자세한 내용은 참조하십시오.섹션 18.4.5.

withmigne_pages설정try, 서버는 거대한 페이지를 토토 커뮤니티하려고 시도하지만 실패한 경우 일반 할당을 토토 커뮤니티하는 것으로 돌아갑니다. 와 함께on, 거대한 페이지를 토토 커뮤니티하지 않으면 서버가 시작되지 않습니다. 와 함께off, 거대한 페이지가 토토 커뮤니티되지 않습니다.

temp_buffers (Integer)

각 데이터베이스 세션에서 사용하는 최대 임시 버퍼 수를 설정합니다. 이들은 임시 테이블에 대한 액세스에만 사용되는 세션-로컬 버퍼입니다.8MB). 설정은 개별 세션 내에서 변경 될 수 있지만 세션 내에서 임시 테이블을 처음 사용하기 전에만 변경할 수 있습니다.

세션은 필요에 따라 임시 버퍼를 할당합니다.temp_buffers. 실제로 많은 임시 버퍼가 필요하지 않은 세션에서 큰 값을 설정하는 비용은 단지 버퍼 디스크립터 일뿐입니다.temp_buffers. 그러나 버퍼가 실제로 토토 커뮤니티되는 경우 추가 8192 바이트가 소비됩니다 (또는 일반적으로blcksz바이트).

max_prepared_transactions (Integer)

에있을 수있는 최대 트랜잭션 수를 설정합니다"준비"동시에 상태 (참조거래 준비). 이 매개 변수를 0으로 설정하면 (기본값 인) 준비된 전환 기능이 비활성화됩니다.

준비된 트랜잭션을 사용하지 않을 계획이라면이 매개 변수는 제대로 준비된 트랜잭션의 생성을 방지하기 위해 0으로 설정해야합니다. 준비된 거래를 사용하는 경우 원할 것입니다max_prepared_transactions적어도max_connections, 모든 세션이 준비된 거래가 준비 될 수 있도록.

대기 서버를 실행할 때이 매개 변수를 마스터 서버와 동일하거나 더 높은 값으로 설정해야합니다. 그렇지 않으면 대기 서버에서 쿼리가 허용되지 않습니다.

work_mem (Integer)

임시 디스크 파일에 작성하기 전에 내부 정렬 작업 및 해시 테이블에서 토토 커뮤니티할 메모리의 양을 지정합니다. 값 기본값은 4 메가 ​​바이트 (까지)4MB). 복잡한 쿼리의 경우 여러 종류 또는 해시 작업이 병렬로 실행 중일 수 있습니다.work_mem; 가치를 선택할 때이 사실을 명심해야합니다.주문 by, 별개의및 합병 조인. 해시 테이블은 해시 조인, 해시 기반 집계 및 해시 기반 처리에서 토토 커뮤니티됩니다.in서브 쿼리.

maintenance_work_mem (Integer)

유지 보수 작업에서 토토 커뮤니티할 최대 메모리 양을 지정합니다.진공, 색인 생성ALTER 테이블 외국 키 추가. 기본적으로 64 메가 바이트 (64MB). 이러한 작업 중 하나만 데이터베이스 세션으로 한 번에 한 번에 실행할 수 있으며, 설치에는 일반적으로 많은 사람들이 동시에 실행되지 않으므로이 값을보다 훨씬 크게 설정하는 것이 안전합니다.work_mem. 더 큰 설정은 진공 청소기 및 데이터베이스 덤프 복원을위한 성능을 향상시킬 수 있습니다.

Autovacuum이 실행될 때 최대autovacuum_max_workers시간이 메모리를 할당 할 수 있으므로 기본값을 너무 높게 설정하지 않도록주의하십시오. 별도로 설정하여 이것을 제어하는 ​​것이 유용 할 수 있습니다autovacuum_work_mem.

죽은 튜플 식별자 모음의 경우진공최대 최대 만 활용할 수 있습니다1GB의 메모리.

대체 _sort_tuples (Integer)

정렬 할 튜플 수가이 숫자보다 작을 때, 정렬은 QuickSort 대신 교체 선택을 토토 커뮤니티하여 첫 번째 출력 실행을 생성합니다. 이것은 더 큰 정렬 작업에 입력되는 튜플이 강력한 물리적-로그의 상관 관계를 갖는 메모리 제약 환경에서 유용 할 수 있습니다.상관 관계. 대체 선택 알고리즘은 병합이없는 장기적으로 하나의 장기적으로 생성 할 수 있으며, 기본 전략을 토토 커뮤니티하면 최종 정렬 된 출력을 생성하기 위해 합병 해야하는 많은 실행이 발생할 수 있습니다.

기본값은 150,000 튜플입니다. 우선 순위 큐는 토토 커뮤니티 가능한 CPU 캐시의 크기에 민감하기 때문에 더 높은 값은 일반적으로 훨씬 더 효과적이지 않으며 반 생산적 일 수 있습니다. 반면 기본 전략은 A를 토토 커뮤니티하여 실행됩니다.캐시 망각알고리즘. 이 속성은 기본 정렬 전략이 토토 커뮤니티 가능한 CPU 캐시를 자동으로 그리고 투명하게 토토 커뮤니티할 수 있도록합니다.

설정maintenance_work_mem기본값으로 일반적으로 유틸리티 명령 외부 정렬을 방지합니다 (예 :색인 생성B-Tree Indexes를 구축하려면) 입력 튜플이 상당히 넓지 않는 한 교체 선택 정렬을 토토 커뮤니티하는 것입니다.

autovacuum_work_mem (Integer)

각 Autovacuum 작업자 프로세스에서 토토 커뮤니티할 최대 메모리 양을 지정합니다. 기본값은 -1로,의 값을 나타냅니다.maintenance_work_mem대신 사용해야합니다. 설정은의 동작에 영향을 미치지 않습니다.진공다른 상황에서 실행될 때. 이 매개 변수는에서만 설정할 수 있습니다.on파일 또는 서버 명령 줄에.

죽은 튜플 식별자 수집의 경우 Autovacuum은 최대 최대 만 활용할 수 있습니다.1GB메모리의 설정autovacuum_work_mem그보다 높은 값으로, Autovacuum이 테이블을 스캔하는 동안 수집 할 수있는 죽은 튜플의 수에는 영향을 미치지 않습니다.

max_stack_depth (Integer)

서버 실행 스택의 최대 안전 깊이를 지정합니다. 이 매개 변수의 이상적인 설정은 커널에 의해 시행되는 실제 스택 크기 한계입니다 (ulimit -s또는 로컬 동등성), 메가 바이트 정도의 안전 마진이 적습니다. 스택 깊이가 서버의 모든 루틴에서 점검되지 않고 표현 평가와 같은 잠재적 인 재구성 루틴에서만 안전 마진이 필요합니다.2MB)는 보수적으로 작고 위험 충돌이 발생할 가능성이 거의 없습니다. 그러나 복잡한 기능을 실행하기에는 너무 작을 수 있습니다.

설정max_stack_depth실제 커널 제한보다 높으면 런 어웨이 재귀 기능이 개별 백엔드 프로세스에 충돌 할 수 있음을 의미합니다. 플랫폼에서PostgreSQL커널 제한을 결정할 수 있습니다. 서버는이 변수가 안전하지 않은 값으로 설정되지 않습니다. 그러나 모든 플랫폼이 정보를 제공하는 것은 아니므로 값을 선택하는 데주의를 기울입니다.

dynamic_shared_memory_type (enum)

서버가 토토 커뮤니티해야하는 동적 공유 메모리 구현을 지정합니다. 가능한 값은posix(POSIX 공유 메모리를 토토 커뮤니티하여 할당SHM_OPEN), SYSV(시스템 V 공유 메모리를 통해SHMGET), Windows(Windows 공유 메모리의 경우),MMAP(데이터 디렉토리에 저장된 메모리 매핑 된 파일을 토토 커뮤니티하여 공유 메모리를 시뮬레이션하려면) 및없음(이 기능을 비활성화하려면). 모든 값이 모든 플랫폼에서 지원되는 것은 아닙니다.MMAP옵션은 플랫폼의 기본값이 아닌 옵션이 일반적으로 수정 된 페이지를 디스크에 반복적으로 다시 쓸 수 있으므로 시스템 I/O로드가 증가 할 수 있기 때문에 일반적으로 권장되지 않습니다. 그러나이면 디버깅에 유용 할 수 있습니다.PG_DYNSHMEM디렉토리는 RAM 디스크에 저장되어 있거나 다른 공유 메모리 시설을 토토 커뮤니티할 수없는 경우.

19.4.2. 디스크

temp_file_limit (Integer)

정렬 및 해시 임시 파일과 같은 임시 파일 또는 HELD 커서의 스토리지 파일과 같은 임시 파일에 토토 커뮤니티할 수있는 최대 디스크 공간을 지정합니다. 이 한도를 초과하려는 거래가 취소됩니다.-1(기본값)는 제한이 없음을 의미합니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

이 설정은 주어진 곳에서 사용하는 모든 임시 파일에 의해 모든 순간에 사용되는 총 공간을 제한합니다PostgreSQL프로세스. 쿼리 실행에 비하인드 스토리를 토토 커뮤니티하는 임시 파일과 달리 명시적인 임시 테이블에 토토 커뮤니티되는 디스크 공간은not이 한도에 대한 계산.

19.4.3. 커널 리소스 사용

max_files_per_process (Integer)

각 서버 하위 프로세스에 허용되는 최대 동시에 열린 파일 수를 설정합니다. 기본값은 1 천 파일입니다."너무 많은 파일"실패,이 설정을 줄이십시오. 이 매개 변수는 서버 시작에서만 설정할 수 있습니다.

19.4.4. 비용 기반 진공 지연

실행 중진공and분석명령, 시스템은 수행되는 다양한 I/O 운영의 예상 비용을 추적하는 내부 카운터를 유지합니다. 누적 된 비용이 한도에 도달 할 때 (VACUUM_COST_LIMIT), 작업을 수행하는 프로세스는 짧은 시간 동안 잠을 자게됩니다.VACUUM_COST_DELAY. 그런 다음 카운터를 재설정하고 계속 실행합니다.

이 기능의 의도는 관리자가 동시 데이터베이스 활동에 대한 이러한 명령의 I/O 영향을 줄일 수 있도록하는 것입니다. 유지 보수 명령이와 같은 중요하지 않은 상황이 많이 있습니다.진공and분석빨리 마무리하십시오. 그러나 이러한 명령은 시스템이 다른 데이터베이스 작업을 수행 할 수있는 능력을 크게 방해하지 않는 것이 매우 중요합니다.

이 기능은 기본적으로 수동으로 발행 된 경우 비활성화진공명령. 활성화하려면를 설정하십시오.VACUUM_COST_DELAY0이 아닌 값으로 변수.

VACUUM_COST_DELAY (Integer)

비용 제한이 초과되었을 때 프로세스가 잠을자는 시간 (밀리 초). 기본값은 0이므로 비용 기반 진공 지연 기능을 비활성화합니다.VACUUM_COST_DELAY10의 배수가 아닌 값으로 10의 다음으로 설정하는 것과 동일한 결과를 가질 수 있습니다.

비용 기반 진공 청소기를 사용할 때 적절한 값VACUUM_COST_DELAY는 일반적으로 매우 작으며 아마도 10 ~ 20 밀리 초입니다. 진공 청소기의 자원 소비 조정은 다른 진공 비용 매개 변수를 변경하여 가장 잘 수행됩니다.

VACUUM_COST_PAGE_HIT (Integer)

공유 버퍼 캐시에서 발견 된 버퍼를 진공 청소기로 비우기위한 예상 비용. 버퍼 풀을 잠그고 공유 해시 테이블을 조회하고 페이지의 내용을 스캔하는 데 드는 비용을 나타냅니다.

VACUUM_COST_PAGE_MISS (Integer)

디스크에서 읽어야하는 버퍼를 진공 청소기에서 진공하기위한 예상 비용. 이는 버퍼 풀을 잠그고 공유 해시 테이블을 조회하고 디스크에서 원하는 블록을 읽고 내용을 스캔하려는 노력을 나타냅니다.

VACUUM_COST_PAGE_DIRTY (Integer)

진공 청소기가 이전에 청소 한 블록을 수정할 때 예상 비용이 청구됩니다. 더러운 블록을 다시 디스크로 플러시하는 데 필요한 추가 I/O를 나타냅니다.

VACUUM_COST_LIMIT (Integer)

진공 청소 과정이 잠을 자게하는 누적 된 비용. 기본값은 200입니다.

참고 :중요한 잠금 장치를 보유하고 있으므로 가능한 빨리 완료 해야하는 특정 작업이 있습니다. 이러한 작업 중에 비용 기반 진공 지연이 발생하지 않습니다.VACUUM_COST_DELAY * Accumulated_balance / VACUUM_COST_LIMIT최대VACUUM_COST_DELAY * 4.

19.4.5. 배경 작가

라는 별도의 서버 프로세스가 있습니다.배경 작가"더러운"(신규 또는 수정 된) 공유 버퍼. 깨끗한 공유 버퍼의 수가 불충분 한 것처럼 보이면 배경 작성자는 파일 시스템에 더러운 버퍼를 작성하여 깨끗하게 표시합니다.

bgwriter_delay (Integer)

배경 작가의 활동 라운드 간의 지연을 지정합니다. 각 라운드에서 작가 문제는 다수의 더러운 버퍼에 대해 씁니다 (다음 매개 변수로 제어 가능).bgwriter_delay밀리 초, 반복. 버퍼 풀에 더러운 버퍼가 없으면에 관계없이 더 긴 수면으로 들어갑니다.bgwriter_delay. 기본값은 200 밀리 초입니다 (200ms). 많은 시스템에서 수면 지연의 효과적인 해상도는 10 밀리 초입니다.bgwriter_delay10의 배수가 아닌 값으로 10의 더 높은 배수로 설정하는 것과 동일한 결과를 가질 수 있습니다.이 매개 변수는에서만 설정할 수 있습니다.on파일 또는 서버 명령 줄에.

bgwriter_lru_maxpages (Integer)

각 라운드 마다이 많은 버퍼는 배경 작가가 작성하지 않습니다. 이것을 0으로 설정하면 배경 쓰기가 비활성화됩니다.on파일 또는 서버 명령 줄에.

bgwriter_lru_multiplier (플로팅 포인트)

각 라운드에 작성된 더러운 버퍼의 수는 최근 라운드 동안 서버 프로세스에 필요한 새로운 버퍼의 수를 기반으로합니다. 최근의 평균 요구는 곱합니다bgwriter_lru_multiplier다음 라운드에서 필요한 버퍼 수의 추정치에 도달합니다. 더러운 버퍼는 깨끗하고 재사용 가능한 버퍼가 많이있을 때까지 작성됩니다.bgwriter_lru_maxpages버퍼는 라운드 당 기록됩니다.) 따라서 1.0의 설정은 a를 나타냅니다."바로 시간에"작성 정책 정확히 필요한 버퍼 수를 필요로합니다. 더 큰 값은 수요가 급증하는 스파이크에 대한 약간의 쿠션을 제공하는 반면, 작은 값은 서버 프로세스에 의해 의도적으로 쓰기를 남기고 있습니다.on파일 또는 서버 명령 줄에.

bgwriter_flush_after (Integer)

bgwriter_flush_after바이트는 BGWRIRTER에 의해 작성되었습니다. 그렇게하면 커널 페이지 캐시의 더러운 데이터의 양이 제한되어 검사 점의 끝에서 FSYNC가 발행 될 때 또는 OS가 백그라운드에서 더 큰 배치로 데이터를 작성할 때 마구간의 가능성을 줄입니다.shared_buffers이지만 성능이 저하 될 수있는 OS의 페이지 캐시보다 작습니다. 이 설정은 일부 플랫폼에 영향을 미치지 않을 수 있습니다.02MB. 기본값은512KBOn Linux,0다른 곳. (만약에blcksz8KB가 아니며 기본값 및 최대 값은 비례 적으로 비례합니다.)이 매개 변수는에서만 설정할 수 있습니다on파일 또는 서버 명령 줄에.

작은 값의bgwriter_lru_maxpagesandbgwriter_lru_multiplier배경 작성자로 인한 추가 I/O 부하를 줄이지 만 서버 프로세스가 스스로 쓰기를 발행하여 대화식 쿼리를 지연시켜야 할 가능성이 높아집니다..

19.4.6. 비동기 동작

exply_io_concurrency (Integer)

동시 디스크 I/O 작업의 수를 설정합니다.PostgreSQL기대는 동시에 실행될 수 있습니다. 이 값을 높이면 개인이있는 I/O 운영 수가 증가합니다PostgreSQL세션은 병렬로 시작하려고 시도합니다. 허용 범위는 1 ~ 1000 또는 비동기 I/O 요청의 발급을 비활성화하기 위해 0입니다.

자기 드라이브의 경우,이 설정의 좋은 출발점은 데이터베이스에 사용되는 RAID 0 스트라이프 또는 RAID 1 미러로 구성된 별도의 드라이브 수입니다. (RAID 5의 경우 패리티 드라이브를 계산해서는 안됩니다.) 그러나 데이터베이스가 종종 동시 세션으로 발행 된 여러 쿼리로 종종 바쁘면 더 낮은 값이 디스크 배열을 바쁘게 유지하기에 충분할 수 있습니다.

비동기 I/O는 효과적인 것에 따라 다릅니다posix_fadvise일부 운영 체제가 부족한 기능. 함수가 존재하지 않으면이 매개 변수를 0으로 설정하면 0으로 설정하면 오류가 발생합니다.

기본값은 지원되는 시스템에서 1입니다. 그렇지 않으면 0.이 값은 같은 이름의 테이블 스페이스 매개 변수를 설정하여 특정 테이블 스페이스의 테이블에 대해 재정의 할 수 있습니다 (참조테이블 스페이스 변경).

max_worker_processes (Integer)

시스템이 지원할 수있는 최대 백그라운드 프로세스 수를 설정합니다. 이 매개 변수는 서버 시작시에만 설정할 수 있습니다.

대기 서버를 실행할 때이 매개 변수를 마스터 서버와 동일하거나 더 높은 값으로 설정해야합니다. 그렇지 않으면 대기 서버에서 쿼리가 허용되지 않습니다.

max_parallel_workers_per_gather (Integer)

단일로 시작할 수있는 최대 근로자 수를 설정합니다수집노드. 평행 근로자는에 의해 설정된 프로세스 풀에서 가져옵니다.max_worker_processes. 요청 된 근로자 수는 실제로 실행 시간에 토토 커뮤니티할 수 없습니다.

병렬 쿼리는 평행이 아닌 쿼리보다 매우 실질적으로 더 많은 리소스를 소비 할 수 있습니다. 각 작업자 프로세스는 추가 사용자 세션과 거의 동일한 영향을 미치는 완전히 별도의 프로세스이기 때문입니다. 이 설정에 대한 값을 선택할 때와 같은 자원 활용을 제어하는 ​​다른 설정을 구성 할 때와 같은work_mem. 와 같은 자원 제한work_mem각 작업자에게 개별적으로 적용됩니다. 즉, 총 활용이 일반적으로 단일 프로세스보다 모든 프로세스에서 훨씬 높을 수 있습니다. 예를 들어, 4 명의 작업자를 사용하는 병렬 쿼리는 작업자가 전혀 사용하지 않는 쿼리보다 최대 5 배의 CPU 시간, 메모리, I/O 대역폭 등을 사용할 수 있습니다..

병렬 쿼리에 대한 자세한 내용은 참조15 장.

backend_flush_after (Integer)

backend_flush_after바이트는 단일 백엔드에 의해 작성되었으며 OS가 기본 저장소에 이러한 글을 발행하도록 강제 시도합니다. 그렇게하면 커널 페이지 캐시의 더러운 데이터의 양이 제한되어 검사 점의 끝에서 FSYNC가 발행 될 때 또는 OS가 백그라운드에서 더 큰 배치로 데이터를 작성할 때 마구간의 가능성을 줄입니다.shared_buffers이지만 성능이 저하 될 수있는 OS의 페이지 캐시보다 작습니다. 이 설정은 일부 플랫폼에 영향을 미치지 않을 수 있습니다.02MB. 기본값은0, 즉 강제 쓰기 백. (만약에blcksz8KB가 아니며 최대 값은 비례 적으로 비례합니다.)

Old_snapShot_threshold (Integer)

스냅 샷을 위험없이 사용할 수있는 최소 시간을 설정합니다스냅 샷 너무 오래된스냅 샷을 사용할 때 오류가 발생합니다. 이 매개 변수는 서버 시작에서만 설정할 수 있습니다.

임계 값을 넘어서, 오래된 데이터가 진공 청소 될 수 있습니다. 이것은 오랫동안 사용중인 스냅 샷에 팽창을 방지하는 데 도움이 될 수 있습니다.

-1이 기능을 비활성화하고 기본값입니다. 생산 작업에 유용한 값은 아마도 적은 시간에서 며칠까지 다양합니다.0또는1min)는 때때로 테스트에 유용 할 수 있기 때문에 허용됩니다. 만큼 높은 설정이지만60D허용됩니다. 많은 워크로드에서 극도의 부풀어 오르거나 트랜잭션 ID 랩 어라운드가 훨씬 짧은 시간 프레임에서 발생할 수 있습니다.

이 기능이 활성화되면 관계가 끝날 때의 자유 공간은 운영 체제에 해제 될 수 없습니다.스냅 샷 너무 오래된조건. 관계에 할당 된 모든 공간은 명시 적으로 해제되지 않는 한 해당 관계 내에서만 재토토 커뮤니티에 대한 관계와 관련된 관계가 남아 있습니다 (예 :진공 Full).

이 설정은 특정 상황에서 오류가 생성되도록 보장하려고 시도하지 않습니다. 실제로, 결과 세트를 구체화 한 커서에서 올바른 결과를 생성 할 수 있다면 참조 테이블의 기본 행이 진공 청소 된 경우에도 오류가 발생하지 않습니다.스냅 샷 너무 오래된스캔의 오류.