20.4. 리소스 소비

20.4.1. 메모리

shared_buffers (정수)

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

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

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

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

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

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

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

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

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

huge_page_size (정수)

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

최신 64비트 서버 아키텍처에서 일반적으로 사용 가능한 페이지 크기는 다음과 같습니다.2MB그리고1GB(인텔 및 AMD),16MB그리고16GB(IBM POWER) 및64kB, 2MB, 32MB그리고1GB(ARM). 사용법 및 지원에 대한 자세한 내용은 다음을 참조하세요.섹션 19.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; 값을 선택할 때 이 사실을 명심해야 합니다. 정렬 작업은 다음에 사용됩니다.주문 기준, 독특및 병합 조인. 해시 테이블은 해시 조인, 해시 기반 집계, 메모화 노드 및 해시 기반 처리에 토토 사이트됩니다.IN하위 쿼리.

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

hash_mem_multiplier (부동 소수점)

해시 기반 작업이 사용할 수 있는 최대 메모리 양을 계산하는 데 사용됩니다. 최종 한도는 다음을 곱하여 결정됩니다.work_membyhash_mem_multiplier. 기본값은 1.0이며, 이는 해시 기반 작업을 동일하게 단순하게 만듭니다.work_mem정렬 기반 작업으로 최대값.

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

maintenance_work_mem (정수)

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

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

데드 튜플 식별자 수집의 경우,진공최대값까지만 활용할 수 있습니다.1GB기억.

autovacuum_work_mem (정수)

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

데드 튜플 식별자 수집의 경우 autovacuum은 최대값까지만 활용할 수 있습니다.1GB메모리의 설정autovacuum_work_mem이 값보다 높은 값은 테이블을 스캔하는 동안 autovacuum이 수집할 수 있는 데드 튜플 수에 영향을 주지 않습니다.

logical_decoding_work_mem (정수)

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

max_stack_깊이 (정수)

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

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

shared_memory_type (열거형)

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

dynamic_shared_memory_type (열거형)

서버가 사용해야 하는 동적 공유 메모리 구현을 지정합니다. 가능한 값은 다음과 같습니다.posix(다음을 사용하여 할당된 POSIX 공유 메모리의 경우shm_open), sysv(다음을 통해 할당된 System V 공유 메모리의 경우shmget), (Windows 공유 메모리의 경우) 및mmap(데이터 디렉토리에 저장된 메모리 매핑 파일을 사용하여 공유 메모리를 시뮬레이션하기 위해). 모든 플랫폼에서 모든 값이 지원되는 것은 아닙니다. 지원되는 첫 번째 옵션은 해당 플랫폼의 기본값입니다. 의 사용mmap플랫폼의 기본값이 아닌 옵션은 일반적으로 운영 체제가 수정된 페이지를 디스크에 반복적으로 기록하여 시스템 I/O 로드를 증가시킬 수 있으므로 일반적으로 권장되지 않습니다. 그러나 다음과 같은 경우 디버깅에 유용할 수 있습니다.pg_dynshmem디렉토리가 RAM 디스크에 저장되어 있거나 다른 공유 메모리 기능을 토토 사이트할 수 없는 경우.

min_dynamic_shared_memory (정수)

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

20.4.2. 디스크

temp_file_limit (정수)

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

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

20.4.3. 커널 리소스 토토 사이트량

max_files_per_process (정수)

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

20.4.4. 비용 기반 진공 지연

실행 중진공그리고분석명령을 사용하면 시스템은 수행되는 다양한 I/O 작업의 예상 비용을 추적하는 내부 카운터를 유지 관리합니다. 누적 비용이 한도에 도달한 경우(다음으로 지정됨)vacuum_cost_limit), 작업을 수행하는 프로세스는 다음에서 지정한 대로 짧은 시간 동안 절전 모드로 전환됩니다.vacuum_cost_delay. 그런 다음 카운터를 재설정하고 실행을 계속합니다.

이 기능의 목적은 관리자가 동시 데이터베이스 활동에 대한 이러한 명령의 I/O 영향을 줄일 수 있도록 하는 것입니다. 다음과 같은 유지 관리 명령이 중요하지 않은 상황이 많이 있습니다.진공그리고분석빨리 끝내세요; 그러나 일반적으로 이러한 명령이 다른 데이터베이스 작업을 수행하는 시스템 기능을 크게 방해하지 않는 것이 매우 중요합니다. 비용 기반 진공 지연은 관리자가 이를 달성할 수 있는 방법을 제공합니다.

이 기능은 수동으로 발행된 경우 기본적으로 비활성화되어 있습니다.진공명령. 활성화하려면 다음을 설정하세요.vacuum_cost_delay변수를 0이 아닌 값으로 변경합니다.

vacuum_cost_delay (부동 소수점)

비용 한도를 초과했을 때 프로세스가 휴면 상태에 있는 시간입니다. 이 값을 단위 없이 지정하면 밀리초로 간주됩니다. 기본값은 0이며, 이는 비용 기반 진공 지연 기능을 비활성화합니다. 양수 값은 비용 기반 진공 청소를 가능하게 합니다.

비용 기반 진공청소기를 사용할 때 다음에 대한 적절한 값vacuum_cost_delay일반적으로 매우 작으며 아마도 1밀리초 미만일 것입니다. 동안vacuum_cost_delay은 밀리초 단위의 값으로 설정될 수 있으며, 이러한 지연은 이전 플랫폼에서 정확하게 측정되지 않을 수 있습니다. 이러한 플랫폼에서는 증가하고 있습니다.진공37522_37670vacuum_cost_delay귀하의 플랫폼이 지속적으로 측정할 수 있는 만큼 작습니다. 큰 지연은 도움이 되지 않습니다.

vacuum_cost_page_hit (정수)

공유 버퍼 캐시에서 발견된 버퍼를 진공 청소하는 데 소요되는 예상 비용입니다. 버퍼 풀을 잠그고, 공유 해시 테이블을 조회하고, 페이지의 콘텐츠를 스캔하는 데 드는 비용을 나타냅니다. 기본값은 1입니다.

vacuum_cost_page_miss (정수)

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

vacuum_cost_page_dirty (정수)

이전에는 깨끗했던 블록을 진공으로 수정할 때 청구되는 예상 비용입니다. 이는 더티 블록을 디스크로 다시 플러시하는 데 필요한 추가 I/O를 나타냅니다. 기본값은 20입니다.

vacuum_cost_limit (정수)

청소 과정을 정지시키는 누적 비용. 기본값은 200입니다.

참고

중요한 잠금을 유지하는 특정 작업이 있으므로 가능한 한 빨리 완료해야 합니다. 이러한 작업 중에는 비용 기반 진공 지연이 발생하지 않습니다. 따라서 비용이 지정된 한도보다 훨씬 높게 누적될 가능성이 있습니다. 이러한 경우 쓸데없이 긴 지연을 방지하기 위해 실제 지연은 다음과 같이 계산됩니다.vacuum_cost_delay * accumulated_balance / vacuum_cost_limit최대vacuum_cost_delay * 4.

20.4.5. 배경 작성자

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

bgwriter_delay (정수)

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

bgwriter_lru_maxpages (정수)

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

bgwriter_lru_multiplier (부동 소수점)

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

bgwriter_flush_after (정수)

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

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

20.4.6. 비동기 동작

backend_flush_after (정수)

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

효과적인_io_concurrency (정수)

동시 디스크 I/O 작업 수를 설정합니다.토토 사이트동시에 실행될 수 있을 것으로 예상됩니다. 이 값을 높이면 개인이 수행하는 I/O 작업 수가 늘어납니다.토토 사이트세션이 병렬로 시작을 시도합니다. 허용되는 범위는 1~1000이며, 비동기 I/O 요청 발행을 비활성화하려면 0입니다. 현재 이 설정은 비트맵 힙 스캔에만 영향을 미칩니다.

자기 드라이브의 경우 이 설정의 좋은 시작점은 데이터베이스에 사용되는 RAID 0 스트라이프 또는 RAID 1 미러를 구성하는 별도의 드라이브 수입니다. (RAID 5의 경우 패리티 드라이브는 계산되지 않습니다.) 그러나 동시 세션에서 실행된 여러 쿼리로 인해 데이터베이스가 자주 사용되는 경우 더 낮은 값으로도 디스크 어레이를 계속 사용하는 데 충분할 수 있습니다. 디스크를 계속 사용하는 데 필요한 것보다 높은 값은 추가 CPU 오버헤드만 발생시킵니다. SSD 및 기타 메모리 기반 스토리지는 많은 동시 요청을 처리할 수 있는 경우가 많으므로 가장 좋은 가치는 수백 개일 수 있습니다.

비동기 I/O는 효과적인 방법에 따라 다릅니다.posix_fadvise일부 운영 체제에는 없는 기능입니다. 해당 기능이 없으면 이 매개변수를 0이 아닌 다른 값으로 설정하면 오류가 발생합니다. 일부 운영 체제(예: Solaris)에서는 이 기능이 있지만 실제로는 아무 작업도 수행하지 않습니다.

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

maintenance_io_concurrency (정수)

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

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

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 : 문서 : 14 : 15 장 무지개 토토 쿼리.

max_parallel_maintenance_workers (정수)

단일 유틸리티 명령으로 시작할 수 있는 최대 병렬 작업자 수를 설정합니다. 현재 병렬 작업자 사용을 지원하는 병렬 유틸리티 명령은 다음과 같습니다.색인 생성B-트리 인덱스를 구축할 때만 해당진공없이전체옵션. 병렬 작업자는 다음에 의해 설정된 프로세스 풀에서 가져옵니다.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 (부울)

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

old_snapshot_threshold (정수)

다음 위험 없이 쿼리 스냅샷을 사용할 수 있는 최소 시간을 설정합니다.스냅샷이 너무 오래됨스냅샷을 사용할 때 오류가 발생했습니다. 이 임계값보다 오랫동안 사용되지 않은 데이터는 진공 청소기로 제거될 수 있습니다. 이렇게 하면 오랫동안 사용 중인 스냅샷이 부풀어오르는 것을 방지할 수 있습니다. 스냅샷에 표시될 데이터 정리로 인한 잘못된 결과를 방지하기 위해 스냅샷이 이 임계값보다 오래되고 스냅샷이 빌드된 이후 수정된 페이지를 읽는 데 스냅샷이 사용될 때 오류가 생성됩니다.

이 값이 단위 없이 지정되면 분으로 간주됩니다. 값은-1(기본값)은 이 기능을 비활성화하여 효과적으로 스냅샷 기간 제한을 무한대로 설정합니다. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.

생산 작업에 유용한 값은 아마도 짧은 시간에서 며칠까지의 범위일 것입니다. 작은 값(예:0또는1분)은 때때로 테스트에 유용할 수 있기 때문에 허용됩니다. 설정이 다음과 같이 높은 동안60d이 허용됩니다. 많은 워크로드에서 극단적인 팽창 또는 트랜잭션 ID 랩어라운드가 훨씬 더 짧은 시간 내에 발생할 수 있다는 점에 유의하세요.

이 기능이 활성화되면 관계 끝의 여유 공간을 운영 체제에 해제할 수 없습니다. 이는 다음을 감지하는 데 필요한 정보를 제거할 수 있기 때문입니다.스냅샷이 너무 오래됨조건. 관계에 할당된 모든 공간은 명시적으로 해제되지 않는 한(예: with진공이 가득 참).

이 설정은 특정 상황에서 오류가 생성된다는 것을 보장하지 않습니다. 실제로 결과 집합을 구체화한 커서(예를 들어)에서 올바른 결과를 생성할 수 있는 경우 참조 테이블의 기본 행을 제거하더라도 오류가 생성되지 않습니다. 일부 테이블은 조기에 안전하게 정리할 수 없으므로 시스템 카탈로그와 같은 이 설정의 영향을 받지 않습니다. 그러한 테이블의 경우 이 설정은 부풀림을 줄이거나 다음과 같은 가능성을 생성하지 않습니다.스냅샷이 너무 오래됨스캔 중 오류가 발생했습니다.

수정 사항 제출

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