19.4. 리소스 소비#

19.4.1. 메모리#

shared_buffers (정수) #

데이터베이스 서버가 공유 메모리 버퍼에 사용하는 메모리 양을 범퍼카 토토합니다. 기본값은 일반적으로 128MB입니다(128MB), 그러나 커널 범퍼카 토토이 이를 지원하지 않는 경우에는 더 적을 수 있습니다(이 과정에서 결정됨).initdb). 이 범퍼카 토토은 128KB 이상이어야 합니다. 그러나 일반적으로 좋은 성능을 위해서는 최소값보다 훨씬 높은 범퍼카 토토이 필요합니다. 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. (기본값이 아님BLCKSZ최소값을 변경하세요.) 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

RAM이 1GB 이상인 전용 데이터베이스 서버가 있는 경우 합리적인 시작 값shared_buffers는 시스템 메모리의 25%입니다. 더 큰 범퍼카 토토이 필요한 일부 작업 부하가 있습니다.shared_buffers효과적이지만 왜냐하면PostgreSQL또한 운영 체제 캐시에 의존하므로 RAM의 40% 이상을 할당할 가능성은 거의 없습니다.shared_buffers더 적은 양보다 더 잘 작동합니다. 더 큰 범퍼카 토토:shared_buffers일반적으로 해당 증가가 필요합니다.max_wal_size, 대량의 신규 또는 변경된 데이터를 장기간에 걸쳐 작성하는 프로세스를 분산시키기 위해.

RAM이 1GB 미만인 시스템에서는 운영 체제에 적절한 공간을 확보하기 위해 더 적은 비율의 RAM이 적합합니다.

거대한_페이지 (열거형) #

주 공유 메모리 영역에 대용량 페이지가 요청되는지 여부를 제어합니다. 유효한 값은 다음과 같습니다.시도해 보세요(기본값),켜짐꺼짐. 와 함께거대한_페이지다음으로 범퍼카 토토됨시도해 보세요, 서버는 거대한 페이지를 요청하려고 시도하지만 실패하면 기본값으로 돌아갑니다. 와 함께켜짐, 대용량 페이지 요청에 실패하면 서버가 시작되지 않습니다. 와 함께꺼짐, 대용량 페이지는 요청되지 않습니다. 거대한 페이지의 실제 상태는 서버 변수로 표시됩니다.huge_pages_status.

현재 이 범퍼카 토토은 Linux 및 Windows에서만 지원됩니다. 다음으로 범퍼카 토토된 경우 다른 시스템에서는 범퍼카 토토이 무시됩니다.시도. Linux에서는 다음 경우에만 지원됩니다.shared_memory_type다음으로 범퍼카 토토됨mmap(기본값).

대규모 페이지를 사용하면 페이지 테이블이 작아지고 메모리 관리에 소요되는 CPU 시간이 줄어들어 성능이 향상됩니다. Linux에서 방대한 페이지를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.섹션 18.4.5.

대형 페이지는 Windows에서 대형 페이지로 알려져 있습니다. 사용하려면 사용자 권한을 할당해야 합니다.메모리에 페이지 잠금실행하는 Windows 사용자 계정으로PostgreSQL. Windows 그룹 정책 도구(gpedit.msc)를 사용하여 사용자 권한을 할당할 수 있습니다.메모리에 페이지 잠금. Windows 서비스가 아닌 독립 실행형 프로세스로 명령 프롬프트에서 데이터베이스 서버를 시작하려면 명령 프롬프트를 관리자로 실행하거나 UAC(사용자 액세스 제어)를 비활성화해야 합니다. UAC가 활성화되면 일반 명령 프롬프트는 사용자 권한을 취소합니다.메모리에 페이지 잠금시작할 때.

이 범퍼카 토토은 주 공유 메모리 영역에만 영향을 미칩니다. Linux, FreeBSD, Illumos와 같은 운영 체제에서도 huge 페이지(또는)를 사용할 수 있습니다.슈퍼페이지 또는대형페이지)의 명시적인 요청 없이 일반 메모리 할당을 위해 자동으로포스트그레SQL. Linux에서는 다음과 같이 호출됩니다.투명한 거대 페이지(THP). 해당 기능은 다음과 같은 성능 저하를 일으키는 것으로 알려져 있습니다.PostgreSQL일부 Linux 버전의 일부 사용자에게는 현재 사용이 권장되지 않습니다(명시적인 사용과 달리거대한_페이지).

huge_page_size (정수) #

활성화된 경우 대용량 페이지의 크기를 제어합니다.거대한_페이지. 기본값은 0(0). 으로 범퍼카 토토된 경우0, 시스템의 기본 거대 페이지 크기가 사용됩니다. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

최신 64비트 서버 아키텍처에서 일반적으로 사용 가능한 페이지 크기는 다음과 같습니다.2MB그리고1GB(인텔 및 AMD),16MB그리고16GB(IBM POWER) 및64kB, 2MB, 32MB그리고1GB(ARM). 사용법 및 지원에 대한 자세한 내용은 다음을 참조하세요.섹션 18.4.5.

기본값이 아닌 범퍼카 토토은 현재 Linux에서만 지원됩니다.

temp_buffers (정수) #

각 데이터베이스 세션 내에서 임시 버퍼에 사용되는 최대 메모리 양을 범퍼카 토토합니다. 이는 임시 테이블에 액세스하는 데에만 사용되는 세션-로컬 버퍼입니다. 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은 8MB입니다(8MB). (만약BLCKSZ은 8kB가 아니며 기본값은 이에 비례하여 확장됩니다.) 이 범퍼카 토토은 개별 세션 내에서 변경할 수 있지만 세션 내에서 임시 테이블을 처음 사용하기 전에만 가능합니다. 이후에 값을 변경하려고 시도해도 해당 세션에는 아무런 영향이 없습니다.

세션은 필요에 따라 다음에 의해 주어진 한도까지 임시 버퍼를 할당합니다.temp_buffers. 실제로 많은 임시 버퍼가 필요하지 않은 세션에서 큰 값을 범퍼카 토토하는 데 드는 비용은 버퍼 설명자, 즉 증분당 약 64바이트에 불과합니다.temp_buffers. 그러나 버퍼가 실제로 사용되면 추가로 8192바이트가 소비됩니다(또는 일반적으로)BLCKSZ바이트).

max_prepared_transactions (정수) #

에 있을 수 있는 최대 트랜잭션 수를 범퍼카 토토합니다.준비됨동시에 상태(참조거래 준비). 이 매개변수를 0(기본값)으로 범퍼카 토토하면 준비된 트랜잭션 기능이 비활성화됩니다. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

준비된 트랜잭션을 사용할 계획이 없다면 준비된 트랜잭션이 실수로 생성되는 것을 방지하기 위해 이 매개변수를 0으로 범퍼카 토토해야 합니다. 준비된 트랜잭션을 사용하는 경우 아마도 원할 것입니다.max_prepared_transactions적어도 다음과 같은 크기max_connections, 모든 세션에 대기 중인 준비된 트랜잭션이 있을 수 있도록 합니다.

대기 서버를 실행할 때, 이 매개변수를 기본 서버와 같거나 높은 값으로 범퍼카 토토해야 합니다. 그렇지 않으면 대기 서버에서 쿼리가 허용되지 않습니다.

work_mem (정수) #

임시 디스크 파일에 쓰기 전에 쿼리 작업(예: 정렬 또는 해시 테이블)에 사용할 기본 최대 메모리 양을 범퍼카 토토합니다. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 기본값은 4MB입니다(4MB). 복잡한 쿼리는 동시에 여러 정렬 및 해시 작업을 수행할 수 있으며, 각 작업은 일반적으로 임시 파일에 데이터 쓰기를 시작하기 전에 이 값이 지정하는 만큼의 메모리를 사용할 수 있습니다. 또한 실행 중인 여러 세션이 이러한 작업을 동시에 수행할 수도 있습니다. 따라서 사용된 총 메모리는 다음 값의 몇 배가 될 수 있습니다.work_mem; 값을 선택할 때 이 사실을 명심해야 합니다. 정렬 작업은 다음에 사용됩니다.주문 기준, DISTINCT및 병합 조인. 해시 테이블은 해시 조인, 해시 기반 집계, 메모화 노드 및 해시 기반 처리에 사용됩니다.IN하위 쿼리.

해시 기반 작업은 일반적으로 동등한 정렬 기반 작업보다 메모리 가용성에 더 민감합니다. 해시 테이블의 메모리 제한은 다음을 곱하여 계산됩니다.work_mem작성자hash_mem_multiplier. 이를 통해 해시 기반 작업이 평소보다 많은 양의 메모리를 사용할 수 있습니다.work_mem기본 금액.

hash_mem_multiplier (부동 소수점) #

해시 기반 작업이 사용할 수 있는 최대 메모리 양을 계산하는 데 사용됩니다. 최종 한도는 다음을 곱하여 결정됩니다.work_membyhash_mem_multiplier. 기본값은 2.0이며, 이는 해시 기반 작업이 평소의 두 배를 사용하게 만듭니다.work_mem기본 금액.

증가를 고려하세요hash_mem_multiplier쿼리 작업으로 인한 유출이 정기적으로 발생하는 환경, 특히 단순히 증가하는 경우work_mem메모리 부족이 발생합니다(메모리 부족은 일반적으로 간헐적인 메모리 부족 오류의 형태를 취함). 기본 범퍼카 토토 2.0은 혼합 작업 부하에 효과적인 경우가 많습니다. 2.0~8.0 이상의 높은 범퍼카 토토은 다음과 같은 환경에서 효과적일 수 있습니다.work_mem이미 40MB 이상으로 늘어났습니다.

maintenance_work_mem (정수) #

다음과 같은 유지 관리 작업에 사용할 최대 메모리 양을 지정합니다.진공, 색인 생성테이블 변경 외래 키 추가. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 기본값은 64MB입니다(64MB). 데이터베이스 세션에서는 이러한 작업 중 하나만 실행할 수 있고 설치 시 일반적으로 동시에 실행되는 작업이 많지 않으므로 이 값을 다음보다 훨씬 크게 범퍼카 토토하는 것이 안전합니다.work_mem. 범퍼카 토토이 크면 데이터베이스 덤프 복원 성능이 향상될 수 있습니다.

autovacuum이 실행될 때 최대autovacuum_max_workers회 이 메모리가 할당될 수 있으므로 기본값을 너무 높게 범퍼카 토토하지 않도록 주의하세요. 이를 별도로 범퍼카 토토하여 제어하는 것이 유용할 수 있습니다.autovacuum_work_mem.

autovacuum_work_mem (정수) #

각 자동 진공 작업자 프로세스에서 사용할 최대 메모리 양을 지정합니다. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 기본값은 -1이며, 이는의 값을 나타냅니다.maintenance_work_mem25982_26054진공다른 컨텍스트에서 실행될 때. 이 매개변수는에서만 범퍼카 토토할 수 있습니다.postgresql.conf파일 또는 서버 명령줄에서.

vacuum_buffer_usage_limit (정수) #

크기를 지정합니다버퍼 액세스 전략다음에 의해 사용됨진공그리고분석명령. 범퍼카 토토은0작업에서 원하는 수만큼 사용할 수 있습니다.shared_buffers. 그렇지 않은 경우 유효한 크기 범위는 다음과 같습니다.128KB16GB. 지정된 크기가 크기의 1/8을 초과하는 경우shared_buffers, 크기는 자동으로 해당 값으로 제한됩니다. 기본값은2MB. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 이 매개변수는 언제든지 범퍼카 토토할 수 있습니다. 다음에 대해 재정의될 수 있습니다.진공그리고분석통과할 때BUFFER_USAGE_LIMIT옵션. 더 높은 범퍼카 토토이 허용될 수 있음진공그리고분석더 빠르게 실행하기 위한 것이지만 범퍼카 토토이 너무 크면 공유 버퍼에서 다른 유용한 페이지가 너무 많이 제거될 수 있습니다.

logical_decoding_work_mem (정수) #

디코딩된 변경 사항 중 일부가 로컬 디스크에 기록되기 전에 논리적 디코딩에 사용될 최대 메모리 양을 지정합니다. 이는 논리적 스트리밍 복제 연결에 사용되는 메모리 양을 제한합니다. 기본값은 64MB입니다(64MB). 각 복제 연결은 이 크기의 단일 버퍼만 사용하고 설치에는 일반적으로 이러한 연결이 동시에 많이 포함되지 않기 때문에(제한됨)max_wal_senders), 이 값을보다 훨씬 높게 범퍼카 토토하는 것이 안전합니다.work_mem, 디스크에 기록되는 디코딩된 변경 사항의 양을 줄입니다.

commit_timestamp_buffers (정수) #

내용을 캐시하는 데 사용할 메모리 양을 지정합니다.pg_commit_ts(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은0, 요청shared_buffers/512 최대 1024개 블록, 16개 블록 이상. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

multixact_member_buffers (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_multixact/members(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은32. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

multixact_offset_buffers (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_multixact/오프셋(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은16. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

notify_buffers (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_notify(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은16. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

직렬화 가능_버퍼 (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_serial(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은32. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

subtransaction_buffers (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_subtrans(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은0, 요청shared_buffers/512 최대 1024개 블록, 16개 블록 이상. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

transaction_buffers (정수) #

콘텐츠를 캐시하는 데 사용할 공유 메모리의 양을 지정합니다.pg_xact(참조표 66.1). 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 기본값은0, 요청shared_buffers/512 최대 1024개 블록, 16개 블록 이상. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

max_stack_깊이 (정수) #

서버 실행 스택의 최대 안전 깊이를 지정합니다. 이 매개변수의 이상적인 범퍼카 토토은 커널이 적용하는 실제 스택 크기 제한입니다(다음에서 범퍼카 토토).ulimit -s또는 이에 상응하는 로컬), 1MB 정도의 안전 여유가 적습니다. 스택 깊이는 서버의 모든 루틴에서 확인되지 않고 잠재적으로 재귀적인 주요 루틴에서만 확인되므로 안전 여유가 필요합니다. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다. 기본 범퍼카 토토은 2MB입니다(2MB)은 보수적으로 규모가 작고 충돌 위험이 낮습니다. 그러나 복잡한 기능을 실행하기에는 너무 작을 수 있습니다. 적절한 권한을 가진 수퍼유저 및 사용자만SET권한으로 이 범퍼카 토토을 변경할 수 있습니다.

범퍼카 토토max_stack_깊이실제 커널 제한보다 높으면 폭주 재귀 함수가 개별 백엔드 프로세스를 중단시킬 수 있음을 의미합니다. 다음과 같은 플랫폼에서포스트그레SQL커널 제한을 결정할 수 있지만 서버는 이 변수가 안전하지 않은 값으로 범퍼카 토토되는 것을 허용하지 않습니다. 그러나 모든 플랫폼이 정보를 제공하는 것은 아니므로 값 선택 시 주의하는 것이 좋습니다.

shared_memory_type (열거형) #

서버가 보유하는 기본 공유 메모리 영역에 사용해야 하는 공유 메모리 구현을 지정합니다.PostgreSQL의 공유 버퍼 및 기타 공유 데이터. 가능한 값은 다음과 같습니다.mmap(다음을 사용하여 할당된 익명 공유 메모리의 경우mmap), sysv(다음을 통해 할당된 System V 공유 메모리의 경우shmget) 및(Windows 공유 메모리의 경우). 모든 플랫폼에서 모든 값이 지원되는 것은 아닙니다. 지원되는 첫 번째 옵션은 해당 플랫폼의 기본값입니다. 의 사용sysv37788_37960섹션 18.4.1).

dynamic_shared_memory_type (열거형) #

서버가 사용해야 하는 동적 공유 메모리 구현을 지정합니다. 가능한 값은 다음과 같습니다.posix(다음을 사용하여 할당된 POSIX 공유 메모리의 경우shm_open), sysv(다음을 통해 할당된 System V 공유 메모리의 경우shmget), (Windows 공유 메모리의 경우) 및mmap(데이터 디렉토리에 저장된 메모리 매핑 파일을 사용하여 공유 메모리를 시뮬레이션하기 위해). 모든 플랫폼에서 모든 값이 지원되는 것은 아닙니다. 처음으로 지원되는 옵션은 일반적으로 해당 플랫폼의 기본값입니다. 의 사용mmap39126_39361pg_dynshmem디렉토리가 RAM 디스크에 저장되어 있거나 다른 공유 메모리 기능을 사용할 수 없는 경우.

min_dynamic_shared_memory (정수) #

병렬 쿼리에 사용하기 위해 서버 시작 시 할당되어야 하는 메모리 양을 지정합니다. 이 메모리 영역이 부족하거나 동시 쿼리로 인해 소진되면 새 병렬 쿼리는 다음으로 구성된 방법을 사용하여 운영 체제에서 임시로 추가 공유 메모리를 할당하려고 시도합니다.dynamic_shared_memory_type, 메모리 관리 오버헤드로 인해 속도가 느려질 수 있습니다. 시작 시 할당되는 메모리는min_dynamic_shared_memory다음의 영향을 받습니다거대한_페이지지원되는 운영 체제에 범퍼카 토토하면 자동으로 관리되는 운영 체제에서 더 큰 페이지를 사용하는 것이 더 유리할 수 있습니다. 기본값은0(없음). 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

19.4.2. 디스크#

temp_file_limit (정수) #

프로세스가 임시 파일(예: 정렬 및 해시 임시 파일 또는 보류 커서용 저장 파일)에 사용할 수 있는 최대 디스크 공간을 지정합니다. 이 한도를 초과하려는 거래는 취소됩니다. 이 값을 단위 없이 지정하면 킬로바이트로 간주됩니다.-1(기본값)은 제한이 없음을 의미합니다. 적절한 권한을 가진 수퍼유저 및 사용자만SET권한으로 이 범퍼카 토토을 변경할 수 있습니다.

이 범퍼카 토토은 주어진 특정 파일이 사용하는 모든 임시 파일이 어느 순간에 사용하는 총 공간을 제한합니다.포스트그레SQL프로세스. 쿼리 실행에서 배후에서 사용되는 임시 파일과 달리 명시적 임시 테이블에 사용되는 디스크 공간은 다음과 같습니다.아님이 한도에 포함됩니다.

file_copy_method (열거형) #

파일을 복사하는 데 사용되는 방법을 지정합니다. 가능한 값은 다음과 같습니다.복사(기본값) 및클론(운영 지원이 가능한 경우).

이 매개변수는 다음에 영향을 미칩니다:

  • 데이터베이스 생성 ... 전략=FILE_COPY

  • 데이터베이스 변경 ... 테이블스페이스 범퍼카 토토 ...

클론다음을 사용합니다copy_file_range()(Linux, FreeBSD) 또는복사파일(macOS) 시스템 호출, 커널에 디스크 블록을 공유하거나 일부 파일 시스템의 하위 계층으로 작업을 푸시할 수 있는 기회를 제공합니다.

max_notify_queue_pages (정수) #

할당된 페이지의 최대량을 지정합니다.알림 / 듣기큐. 기본값은 1048576입니다. 8KB 페이지의 경우 최대 8GB의 디스크 공간을 사용할 수 있습니다.

19.4.3. 커널 리소스 사용량#

max_files_per_process (정수) #

각 서버 하위 프로세스가 동시에 열 수 있는 최대 열린 파일 수를 범퍼카 토토합니다. 포스트마스터에서 이미 열려 있는 파일은 이 제한에 포함되지 않습니다. 기본값은 1,000개 파일입니다.

커널이 안전한 프로세스별 제한을 적용하는 경우 이 범퍼카 토토에 대해 걱정할 필요가 없습니다. 그러나 일부 플랫폼(특히 대부분의 BSD 시스템)에서는 많은 프로세스가 모두 그렇게 많은 파일을 열려고 하면 커널은 개별 프로세스가 시스템이 실제로 지원할 수 있는 것보다 더 많은 파일을 열 수 있도록 허용합니다. 만약 당신이 본다면열린 파일이 너무 많습니다.실패, 이 범퍼카 토토을 줄여보세요. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

19.4.4. 배경 작성자#

다음이라는 별도의 서버 프로세스가 있습니다.배경 작가, 그 기능은 쓰기를 발행하는 것입니다.더러운(신규 또는 수정) 공유 버퍼. 정리된 공유 버퍼의 수가 부족한 것으로 나타나면 백그라운드 작성자는 일부 더티 버퍼를 파일 시스템에 쓰고 이를 정리된 것으로 표시합니다. 이렇게 하면 사용자 쿼리를 처리하는 서버 프로세스가 깨끗한 버퍼를 찾을 수 없고 더티 버퍼 자체를 작성해야 할 가능성이 줄어듭니다. 그러나 백그라운드 기록기는 I/O 로드의 전체적인 순 증가를 초래합니다. 그렇지 않으면 반복적으로 더티된 페이지가 체크포인트 간격당 한 번만 기록될 수 있지만 백그라운드 기록기는 동일한 간격으로 더러워지면 페이지를 여러 번 쓸 수 있기 때문입니다. 이 하위 섹션에서 논의된 매개변수는 지역적 필요에 맞게 동작을 조정하는 데 사용될 수 있습니다.

bgwriter_delay (정수) #

백그라운드 기록기에 대한 활동 라운드 사이의 지연을 지정합니다. 각 라운드에서 작성자는 일정 수의 더티 버퍼에 대한 쓰기를 발행합니다(다음 매개변수로 제어 가능). 그런 다음 다음 기간 동안 잠을 잔다.bgwriter_delay, 그리고 반복합니다. 그러나 버퍼 풀에 더티 버퍼가 없으면 다음과 관계없이 더 긴 절전 모드로 들어갑니다.bgwriter_delay. 이 값을 단위 없이 지정하면 밀리초로 간주됩니다. 기본값은 200밀리초(200ms). 일부 시스템에서는 절전 지연의 효과적인 해결 방법이 10밀리초입니다. 범퍼카 토토bgwriter_delay10의 배수가 아닌 값에 대한 값은 다음으로 높은 10의 배수로 범퍼카 토토하는 것과 동일한 결과를 가질 수 있습니다. 이 매개변수는postgresql.conf파일 또는 서버 명령줄에서.

bgwriter_lru_maxpages (정수) #

각 라운드에서 백그라운드 작성자는 이 만큼의 버퍼만 기록합니다. 이 값을 0으로 범퍼카 토토하면 백그라운드 쓰기가 비활성화됩니다. (별도의 전용 보조 프로세스에 의해 관리되는 체크포인트는 영향을 받지 않습니다.) 기본값은 100개 버퍼입니다. 이 매개변수는에서만 범퍼카 토토할 수 있습니다.postgresql.conf파일 또는 서버 명령줄에서.

bgwriter_lru_multiplier (부동 소수점) #

각 라운드에 기록된 더티 버퍼의 수는 최근 라운드 동안 서버 프로세스에 필요한 새 버퍼의 수를 기반으로 합니다. 평균 최근 수요에 다음을 곱합니다.bgwriter_lru_multiplier다음 라운드 동안 필요할 버퍼 수의 추정치에 도달합니다. 더티 버퍼는 사용 가능한 깨끗하고 재사용 가능한 버퍼가 많아질 때까지 기록됩니다. (단, 그 이상은 안됩니다.bgwriter_lru_maxpages버퍼는 라운드마다 기록됩니다.) 따라서 1.0 범퍼카 토토은 다음을 나타냅니다.제때에필요할 것으로 예상되는 버퍼 수를 정확하게 쓰는 정책입니다. 값이 클수록 수요 급증에 대한 완충 효과가 제공되는 반면, 값이 작을수록 의도적으로 서버 프로세스에서 쓰기가 수행되도록 둡니다. 기본값은 2.0입니다. 이 매개변수는에서만 범퍼카 토토할 수 있습니다.postgresql.conf파일 또는 서버 명령줄에서.

bgwriter_flush_after (정수) #

백그라운드 기록기에 의해 이 양 이상의 데이터가 기록될 때마다 OS가 기본 저장소에 이러한 쓰기를 실행하도록 강제로 시도하십시오. 그렇게 하면 커널 페이지 캐시에 있는 더티 데이터의 양이 제한되어 다음과 같은 경우 중단 가능성이 줄어듭니다.fsync은 체크포인트가 끝날 때 또는 OS가 백그라운드에서 더 큰 배치로 데이터를 다시 쓸 때 발행됩니다. 이로 인해 트랜잭션 지연 시간이 크게 단축되는 경우가 많지만, 특히 워크로드가 다음보다 큰 경우도 있습니다.shared_buffers, 그러나 OS의 페이지 캐시보다 작으므로 성능이 저하될 수 있습니다. 이 범퍼카 토토은 일부 플랫폼에는 영향을 미치지 않을 수 있습니다. 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 유효한 범위는 다음 사이입니다.051656_516972MB. 기본값은512kB리눅스의 경우,0다른 곳에. (만약에BLCKSZ은 8kB가 아니며 기본값과 최대값은 이에 비례하여 확장됩니다.) 이 매개변수는postgresql.conf파일 또는 서버 명령줄에서.

더 작은 값bgwriter_lru_maxpages그리고bgwriter_lru_multiplier백그라운드 작성기로 인한 추가 I/O 로드를 줄이되 서버 프로세스가 스스로 쓰기를 실행해야 하므로 대화형 쿼리가 지연될 가능성이 높아집니다.

19.4.5. I/O#

backend_flush_after (정수) #

단일 백엔드에서 이 양보다 많은 데이터를 기록할 때마다 OS가 기본 저장소에 이러한 쓰기를 실행하도록 강제로 시도하십시오. 그렇게 하면 커널 페이지 캐시에 있는 더티 데이터의 양이 제한되어 다음과 같은 경우 중단 가능성이 줄어듭니다.fsync은 체크포인트가 끝날 때 또는 OS가 백그라운드에서 더 큰 배치로 데이터를 다시 쓸 때 발행됩니다. 이로 인해 트랜잭션 지연 시간이 크게 단축되는 경우가 많지만, 특히 워크로드가 다음보다 큰 경우도 있습니다.shared_buffers, 그러나 OS의 페이지 캐시보다 작으므로 성능이 저하될 수 있습니다. 이 범퍼카 토토은 일부 플랫폼에는 영향을 미치지 않을 수 있습니다. 이 값을 단위 없이 지정하면 블록으로 간주됩니다. 즉,BLCKSZ바이트, 일반적으로 8kB. 유효한 범위는 다음 사이입니다.054015_540562MB. 기본값은0, 즉 강제 쓰기 저장이 없습니다. (만약BLCKSZ는 8kB가 아니며 최대값은 이에 비례하여 확장됩니다.)

효과적인_io_concurrency (정수) #

동시 스토리지 I/O 작업 수를 범퍼카 토토합니다.포스트그레SQL동시에 실행될 수 있을 것으로 예상됩니다. 이 값을 높이면 개인이 수행하는 I/O 작업 수가 늘어납니다.PostgreSQL세션이 병렬로 시작을 시도합니다. 허용되는 범위는11000, 또는0비동기 I/O 요청 발행을 비활성화합니다. 기본값은16.

값이 높을수록 쿼리가 눈에 띄는 I/O 정지를 경험하는 더 높은 지연 시간의 저장소와 IOP가 높은 장치에 가장 큰 영향을 미칩니다. 불필요하게 높은 값은 시스템의 모든 쿼리에 대한 I/O 지연 시간을 증가시킬 수 있습니다.

프리페치 조언 지원이 포함된 시스템에서,효과적인_io_concurrency또한 프리페치 거리를 제어합니다.

이 값은 동일한 이름의 테이블스페이스 매개변수를 범퍼카 토토하여 특정 테이블스페이스의 테이블에 대해 재정의될 수 있습니다(참조테이블스페이스 변경).

maintenance_io_concurrency (정수) #

비슷함효과적인_io_concurrency, 그러나 많은 클라이언트 세션을 대신하여 수행되는 유지 관리 작업에 사용됩니다.

기본값은16. 동일한 이름의 테이블스페이스 매개변수를 범퍼카 토토하여 특정 테이블스페이스의 테이블에 대해 이 값을 재정의할 수 있습니다(참조)테이블스페이스 변경).

io_max_combine_limit (정수) #

I/O를 결합하는 작업에서 최대 I/O 크기를 제어하고 사용자가 범퍼카 토토 가능한 매개변수를 자동으로 제한합니다.io_combine_limit. 이 매개변수는에서만 범퍼카 토토할 수 있습니다.postgresql.conf파일 또는 서버 명령줄에서. 가능한 최대 크기는 운영 체제와 블록 크기에 따라 다르지만 일반적으로 Unix에서는 1MB, Windows에서는 128kB입니다. 기본값은 128kB입니다.

io_combine_limit (정수) #

I/O를 결합하는 작업에서 가장 큰 I/O 크기를 제어합니다. 보다 높게 범퍼카 토토한 경우io_max_combine_limit매개변수의 경우 더 낮은 값이 대신 사용되므로 I/O 크기를 늘리려면 두 값을 모두 높여야 할 수도 있습니다. 가능한 최대 크기는 운영 체제와 블록 크기에 따라 다르지만 일반적으로 Unix에서는 1MB, Windows에서는 128kB입니다. 기본값은 128kB입니다.

io_max_concurrency (정수) #

한 프로세스가 동시에 실행할 수 있는 최대 I/O 작업 수를 제어합니다.

기본 범퍼카 토토은-1다음을 기준으로 숫자를 선택합니다.shared_buffers및 최대 프로세스 수(max_connections, autovacuum_worker_slots, max_worker_processes그리고max_wal_senders), 그러나 그 이하64.

이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

io_method (열거형) #

비동기 I/O 실행 방법을 선택합니다. 가능한 값은 다음과 같습니다:

  • 노동자(작업자 프로세스를 사용하여 비동기 I/O 실행)

  • io_uring(io_uring을 사용하여 비동기 I/O 실행, 다음을 사용하는 빌드 필요--with-liburing / -드리버링)

  • 동기화(비동기 적격 I/O를 동기식으로 실행)

기본값은노동자.

이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다.

io_workers (정수) #

사용할 I/O 작업자 프로세스 수를 선택합니다. 기본값은 3입니다. 이 매개변수는에서만 범퍼카 토토할 수 있습니다.postgresql.conf파일 또는 서버 명령줄에서.

다음의 경우에만 효과가 있습니다.io_method다음으로 범퍼카 토토됨노동자.

19.4.6. 작업자 프로세스#

max_worker_processes (정수) #

클러스터가 지원할 수 있는 최대 백그라운드 프로세스 수를 범퍼카 토토합니다. 이 매개변수는 서버 시작 시에만 범퍼카 토토할 수 있습니다. 기본값은 8입니다.

대기 서버를 실행할 때, 이 매개변수를 기본 서버의 값과 같거나 더 높은 값으로 범퍼카 토토해야 합니다. 그렇지 않으면 대기 서버에서 쿼리가 허용되지 않습니다.

이 값을 변경할 때 조정도 고려하십시오.max_parallel_workers, max_parallel_maintenance_workersmax_parallel_workers_per_gather.

max_parallel_workers_per_gather (정수) #

단일로 시작할 수 있는 최대 작업자 수를 범퍼카 토토합니다.집결또는집합 병합노드. 병렬 작업자는 다음에 의해 범퍼카 토토된 프로세스 풀에서 가져옵니다.max_worker_processes, 제한됨max_parallel_workers. 요청한 작업자 수는 실제로 런타임에 사용 가능하지 않을 수 있습니다. 이런 일이 발생하면 계획은 예상보다 적은 수의 작업자로 실행되므로 비효율적일 수 있습니다. 기본값은 2입니다. 이 값을 0으로 범퍼카 토토하면 병렬 쿼리 실행이 비활성화됩니다.

병렬 쿼리는 비병렬 쿼리보다 훨씬 더 많은 리소스를 소비할 수 있습니다. 각 작업자 프로세스는 추가 사용자 세션과 마찬가지로 시스템에 대략 동일한 영향을 미치는 완전히 별도의 프로세스이기 때문입니다. 이 범퍼카 토토의 값을 선택할 때뿐만 아니라 리소스 활용도를 제어하는 다른 범퍼카 토토을 구성할 때에도 이 점을 고려해야 합니다.work_mem. 다음과 같은 리소스 제한work_mem는 각 작업자에게 개별적으로 적용됩니다. 즉, 전체 사용률은 일반적으로 단일 프로세스에 비해 모든 프로세스에서 훨씬 높을 수 있습니다. 예를 들어 작업자 4개를 사용하는 병렬 쿼리는 작업자를 전혀 사용하지 않는 쿼리에 비해 CPU 시간, 메모리, I/O 대역폭 등을 최대 5배까지 사용할 수 있습니다.

병렬 쿼리에 대한 자세한 내용은 참조PostgreSQL : 문서 : 18 : 15 장 젠 토토 쿼리.

max_parallel_maintenance_workers (정수) #

단일 유틸리티 명령으로 시작할 수 있는 최대 병렬 작업자 수를 범퍼카 토토합니다. 현재 병렬 작업자 사용을 지원하는 병렬 유틸리티 명령은 다음과 같습니다.색인 생성B-트리, GIN 또는 BRIN 인덱스를 구축할 때 및진공없이전체옵션. 병렬 작업자는 다음에 의해 범퍼카 토토된 프로세스 풀에서 가져옵니다.max_worker_processes, 제한됨max_parallel_workers. 요청한 작업자 수는 실제로 런타임에 사용 가능하지 않을 수 있습니다. 이런 일이 발생하면 유틸리티 작업은 예상보다 적은 수의 작업자로 실행됩니다. 기본값은 2입니다. 이 값을 0으로 범퍼카 토토하면 유틸리티 명령으로 병렬 작업자를 사용할 수 없습니다.

병렬 유틸리티 명령은 동등한 비병렬 작업보다 훨씬 더 많은 메모리를 소비해서는 안 된다는 점에 유의하세요. 이 전략은 일반적으로 작업자 프로세스별로 리소스 제한이 적용되는 병렬 쿼리 전략과 다릅니다. 병렬 유틸리티 명령은 리소스 제한을 처리합니다.maintenance_work_mem병렬 작업자 프로세스 수에 관계없이 전체 유틸리티 명령에 적용되는 제한입니다. 그러나 병렬 유틸리티 명령은 여전히 훨씬 더 많은 CPU 리소스와 I/O 대역폭을 소비할 수 있습니다.

max_parallel_workers (정수) #

클러스터가 병렬 작업을 지원할 수 있는 최대 작업자 수를 범퍼카 토토합니다. 기본값은 8입니다. 이 값을 늘리거나 줄일 때 조정도 고려하세요.max_parallel_maintenance_workers그리고max_parallel_workers_per_gather. 또한 이 값에 대한 범퍼카 토토은 다음보다 높습니다.max_worker_processes병렬 작업자는 해당 범퍼카 토토에 의해 범퍼카 토토된 작업자 프로세스 풀에서 가져오므로 효과가 없습니다.

parallel_leader_participation (부울) #

리더 프로세스가 아래 쿼리 계획을 실행할 수 있도록 허용합니다.집결그리고집합 병합노드를 작업자 프로세스를 기다리는 대신에 사용합니다. 기본값은켜짐. 이 값을 다음으로 범퍼카 토토합니다.꺼짐리더가 튜플을 충분히 빠르게 읽지 않기 때문에 작업자가 차단될 가능성을 줄이지만, 첫 번째 튜플이 생성되기 전에 작업자 프로세스가 시작될 때까지 리더 프로세스가 기다려야 합니다. 리더가 성과를 돕거나 방해할 수 있는 정도는 계획 유형, 작업자 수 및 쿼리 기간에 따라 다릅니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.