2025 년 9 월 4 일 :토토 캔 18 RC 1 릴리스!
이 문서는 지원되지 않는 버전의 토토 캔을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 토토 캔사설 토토 PostgreSQL : 문서 : 17 : 19.4. 자원 소비버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

18.4. 자원 소비

18.4.1. 메모리

shared_buffers(정수)

데이터베이스 서버가 사용하는 메모리 양을 설정합니다. 공유 메모리 버퍼. 기본값은 일반적으로 32입니다 메가 바이트 (32MB) 커널 설정이 지원하지 않으면 덜 결정initdb). 이 설정은 있어야합니다 최소 128 킬로 바이트. (의 비 디폴트 값blcksz최소값 변경.) 그러나 설정은 최소값보다 훨씬 높습니다 일반적으로 좋은 성능에 필요합니다. 이 매개 변수는 할 수 토토 캔 서버 시작시에만 설정됩니다.

1GB가있는 전용 데이터베이스 서버가있는 경우 더 많은 RAM, 합리적인 시작 가치shared_buffers는 메모리의 25%입니다 당신의 시스템. 큰 워크로드가 토토 캔 설정shared_buffersare 효과적이지만토토 캔또한 의존합니다 운영 체제 캐시는 할당되지 않습니다 RAM의 40% 이상shared_buffersa보다 더 잘 작동합니다 적은 양. 더 큰 설정shared_buffers보통 a 해당 증가Checkpoint_segments, 퍼지기 위해 대량의 신규 또는 더 긴 기간 동안 데이터 변경.

1GB 미만의 RAM이있는 시스템에서 더 작은 RAM의 백분율은 적절하게 떠나기 위해 적절합니다. 운영 체제를위한 공간. 또한 창문에서는 큰 에 대한 값shared_buffers그렇지 않습니다 효과적입니다. 더 나은 결과를 유지할 수 토토 캔 비교적 낮은 설정과 운영 체제 사용 대신 더 캐시하십시오. 유용한 범위shared_buffers12601_12665

이 매개 변수를 늘리면토토 캔더 많은 요청System V공유 메모리 운영 체제의 기본 구성보다 허용. 보다섹션 17.4.1해당 매개 변수를 조정하는 방법에 대한 정보 필요한.

temp_buffers(Integer)

사용 된 임시 버퍼의 최대 수를 설정합니다 각 데이터베이스 세션. 이들은 세션-로컬 버퍼입니다 임시 테이블에 대한 액세스에만 사용됩니다. 기본값은입니다 8 메가 바이트 (8MB). 그만큼 개별 세션 내에서 설정을 변경할 수 있지만 임시 테이블을 처음 사용하기 전까지 만 세션; 이후 가치를 변경하려는 시도는 그럴 것입니다 그 세션에는 영향을 미치지 않습니다.

세션은 필요에 따라 임시 버퍼를 할당합니다 에 의해 주어진 한계까지temp_buffers. 큰 설정 비용 실제로 많은 것을 필요로하지 않는 세션의 가치 임시 버퍼는 버퍼 디스크립터 일뿐입니다 64 바이트, 증분 당temp_buffers. 그러나 버퍼가있는 경우 실제로 추가로 사용 된 8192 바이트가 토토 캔됩니다 그것을 위해 (또는 일반적으로blcksz바이트).

max_prepared_transactions(Integer)

그만큼"준비"상태 동시에 (참조거래 준비). 이 매개 변수 설정 (기본값) 준비된 전환 기능을 비활성화합니다. 이 매개 변수 서버 시작시에만 설정할 수 토토 캔.

준비된 트랜잭션을 사용할 계획이없는 경우, 이 매개 변수는 방지하기 위해 0으로 설정해야합니다 준비된 거래의 우발적 인 생성. 당신이라면 준비된 거래를 사용하면 아마 원할 것입니다max_prepared_transactions적어도max_connections, 모든 세션에 준비된 거래를 가질 수 토토 캔 보류 중.

이 매개 변수를 늘리면토토 캔더 많은 요청System V공유 메모리 운영 체제의 기본 구성보다 허용. 보다섹션 17.4.1해당 매개 변수를 조정하는 방법에 대한 정보 필요한.

work_mem(정수)

내부에서 사용할 메모리의 양을 지정합니다. 전환하기 전에 작업 및 해시 테이블을 정렬하십시오 임시 디스크 파일. 값은 기본적으로 하나의 메가 바이트로 표시됩니다 (1MB). 단지의 경우에 유의하십시오 쿼리, 여러 종류 또는 해시 작업이 실행 중일 수 토토 캔 동시에; 각각은 많이 사용할 수 토토 캔 이 값에 따라 메모리가 포함되기 전에 지정됩니다. 임시 파일로의 데이터. 또한 몇 가지 달리기 세션 그러한 작업을 동시에 수행 할 수 토토 캔. 그래서 총 사용 된 메모리는 여러 번이 될 수 토토 캔.work_mem; 이것을 유지해야합니다 값을 선택할 때 사실을 염두에 두십시오. 정렬 작업은 다음과 같습니다 사용주문, 별개의및 합병 조인. 해시 테이블입니다 해시 조인, 해시 기반 집계 및 해시 기반 처리in서브 쿼리.

maintenance_work_mem(정수)

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

autovacuum이 실행될 때 최대autovacuum_max_workers이 메모리가있을 수 토토 캔 할당되므로 기본값도 설정하지 않도록주의하십시오. 높은.

max_stack_depth(Integer)

서버의 최대 안전 깊이를 지정합니다 실행 스택. 이 매개 변수의 이상적인 설정은 다음과 같습니다 커널에 의해 시행되는 실제 스택 크기 한계 ( 설정ulimit -s또는 로컬 동등한), 메가 바이트의 안전 마진이 적습니다. 스택 깊이가이므로 안전 마진이 필요합니다. 서버의 모든 루틴에서 확인되지 않고 표현과 같은 주요 잠재적 인 루틴 평가. 기본 설정은 두 메가 바이트입니다 (2MB)는 보수적입니다 작고 위험 충돌 위험이 없을 것입니다. 그러나 그럴 수도 토토 캔 복잡한 기능을 실행하기에는 너무 작습니다. 오직 슈퍼업자는이 설정을 변경할 수 토토 캔.

설정max_stack_depth실제 커널 한계보다 높으면 런 어웨이 재귀 기능은 개인에게 충돌 할 수 토토 캔 백엔드 프로세스. 플랫폼에서토토 캔커널을 결정할 수 있습니다 제한,이 변수를 안전하지 않은 상태로 설정할 수 없습니다. 값. 그러나 모든 플랫폼이 제공하는 것은 아닙니다 정보를 선택하는 데주의를 기울여야합니다 값.

18.4.2. 커널 리소스 용법

max_files_per_process(정수)

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

shared_preload_libraries(String)

이 변수는 하나 이상의 공유 라이브러리를 지정합니다 서버 시작시 전부해야합니다. 더 이상 하나의 라이브러리를로드하고 이름을 분리해야합니다. 쉼표. 예를 들어,'$ libdir/mylib'원인mylib.so(또는 일부 플랫폼에서mylib.sl) 설치의 표준 라이브러리 디렉토리. 이 매개 변수 서버 시작시에만 설정할 수 있습니다.

토토 캔절차 언어 라이브러리는 이런 식으로 사전로드 될 수 있으며 일반적으로 구문을 사용하여'$ libdir/plxxx'여기서xxxisPGSQL, Perl, tcl또는Python.

공유 라이브러리를 사전로드하여 라이브러리 시작 라이브러리가 처음 사용될 때 시간을 피합니다. 하지만, 각각의 새로운 서버 프로세스를 시작하는 시간이 증가 할 수 토토 캔. 그 과정이 라이브러리를 사용하지 않더라도 약간. 그래서 이 매개 변수는 라이브러리에만 권장됩니다 대부분의 세션에서 사용됩니다.

참고 :Windows 호스트에서 사전로드 a 서버 시작의 라이브러리는 시간이 줄어들지 않습니다 각 새로운 서버 프로세스를 시작하는 데 필요합니다. 각 서버 프로세스는 모든 예압 라이브러리를 다시로드합니다. 하지만,shared_preload_libraries여전히입니다 일부 공유 라이브러리이기 때문에 Windows 호스트에서 유용합니다 취하는 특정 작업을 수행해야 할 수도 있습니다 Postmaster Start (예 : 공유 라이브러리는 경량 잠금 장치를 예약해야 할 수도 있습니다 공유 메모리와 당신은 그 후에 그렇게 할 수 없습니다 우체국 장이 시작되었습니다).

지정된 라이브러리를 찾을 수없는 경우 서버는 시작에 실패.

모든 토토 캔 지원 라이브러리는가 있습니다."매직 블록"보장하기 위해 확인되었습니다 호환성. 이러한 이유로, 비 포스트 그레 스크l 라이브러리 이런 식으로로드 할 수 없습니다.

18.4.3. 비용 기반 진공 지연

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

이 기능의 의도는 관리자가 동시 데이터베이스에 대한 이러한 명령의 I/O 영향 감소 활동. 그다지 많지 않은 상황이 많이 토토 캔. 유지 보수 명령이진공분석빨리 마무리하십시오. 그러나 일반적으로 매우 중요합니다 이 명령은 능력을 크게 방해하지 않습니다 다른 데이터베이스 작업을 수행하는 시스템의 비용 기반 진공 지연은 관리자가 달성 할 수있는 방법을 제공합니다 이것.

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

VACUUM_COST_DELAY(Integer)

한 밀리 초의 시간은 그 과정입니다 비용 제한이 초과되면 잠을 자게됩니다. 그만큼 기본값은 0이므로 비용 기반을 비활성화합니다 진공 지연 기능. 긍정적 인 가치는 비용 기반을 가능하게합니다 진공 청소기. 많은 시스템에서 효과적입니다 수면 지연의 해상도는 10 밀리 초입니다. 환경VACUUM_COST_DELAY값으로 10의 배수가 아닌 결과는 동일한 결과를 가질 수 있습니다. 다음으로 더 높은 배수로 설정하면서

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

VACUUM_COST_PAGE_HIT(정수)

공유 버퍼 캐시. 잠금 비용을 나타냅니다 버퍼 풀, 공유 해시 테이블을 조회하고 페이지의 내용. 기본값은 하나입니다.

VACUUM_COST_PAGE_MISS(Integer)

디스크에서 읽으십시오. 이것은 잠금 노력을 나타냅니다 버퍼 풀, 공유 해시 테이블을 조회하고 읽으십시오 디스크에서 원하는 블록을 사용하고 컨텐츠를 스캔합니다. 그만큼 기본값은 10입니다.

VACUUM_COST_PAGE_DIRTY(Integer)

진공 수정시 요금이 청구 된 예상 비용 a 이전에 깨끗한 블록. 추가를 나타냅니다 더러운 블록을 다시 디스크로 플러시해야합니다. 기본값은 20입니다.

VACUUM_COST_LIMIT(Integer)

진공 청소기를 일으키는 축적 된 비용 잠을자는 과정. 기본값은 200입니다.

참고 :보유하는 특정 작업이 있습니다 치명적인 자물쇠가 있으므로 빨리 완료해야합니다 가능한. 비용 기반 진공 지연은이 중에 발생하지 않습니다 운영. 따라서 비용이 가능합니다 지정된 한계보다 훨씬 높습니다. 피하기 위해 그러한 경우에 쓸모 없게 긴 지연, 실제 지연은 로 계산VACUUM_COST_DELAY * Accumulated_balance / VACUUM_COST_LIMIT최대VACUUM_COST_DELAY * 4.

18.4.4. 배경 작가

이라는 별도의 서버 프로세스가 토토 캔.배경 작가쓰기"더러운"공유 버퍼. 의도는 서버가 사용자 쿼리를 처리하는 것입니다 쓰기가 발생할 때까지 거의 기다릴 필요가 없거나 절대 기다릴 필요가 없습니다. 배경 작가가 할 것이기 때문입니다. 그러나 A가 있습니다 반복적으로 쇠약 해졌 기 때문에 I/O 부하의 순 전체적으로 증가 페이지는 체크 포인트 당 한 번만 작성 될 수 있습니다 간격이지만 배경 작가는 몇 가지를 쓸 수 있습니다 같은 간격으로 시간. 이것에서 논의 된 매개 변수 하위 섹션은 로컬의 동작을 조정하는 데 사용될 수 있습니다. 필요.

bgwriter_delay(정수)

활동 라운드 간의 지연을 지정합니다 배경 작가. 각 라운드에서 작가 문제는 쓴다 일부 더러운 버퍼의 경우 ( 다음 매개 변수). 그런 다음bgwriter_delay밀리 초, 반복. 기본값은 200 밀리 초입니다 (200ms). 많은 시스템에서 수면 지연의 효과적인 해상도는 10 밀리 초입니다. 환경bgwriter_delaya 10의 배수가 아닌 값은 동일 할 수 있습니다. 다음으로 설정하는 결과 10 of 10의 다음으로 설정됩니다. 이 매개 변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버에서 명령 줄.

bgwriter_lru_maxpages(정수)

각 라운드 마다이 많은 버퍼가 배경 작가가 쓴. 이것을 0으로 설정합니다 배경 쓰기를 비활성화합니다 (체크 포인트 제외 활동). 기본값은 100 버퍼입니다. 이것 매개 변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버에서 명령 줄.

bgwriter_lru_multiplier(플로팅 포인트)

각 라운드에 작성된 더러운 버퍼의 수는 다음과 같습니다. 필요한 새로운 버퍼의 수에 따라 최근 라운드 동안 서버 프로세스에 의해. 평균 최근의 필요는 곱하기bgwriter_lru_multiplier필요한 버퍼 수에 대한 추정 다음 라운드에서. 더러운 버퍼는까지 작성됩니다 깨끗하고 재사용 가능한 버퍼가 많이 있습니다. (그러나 더 이상bgwriter_lru_maxpages버퍼가 있습니다 라운드당 작성.) 따라서 1.0의 설정은 a를 나타냅니다."제 시간에"정책 예측 된 버퍼의 수를 정확히 작성합니다 필요합니다. 더 큰 값은 스파이크에 대한 쿠션을 제공합니다 수요가 있지만 작은 가치는 의도적으로 떠납니다 서버 프로세스에 의해 수행되도록합니다. 기본값은입니다 2.0. 이 매개 변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버에서 명령 줄.

작은 값의bgwriter_lru_maxpagesbgwriter_lru_multiplier추가 I/O 감소 배경 작가로 인한 하중이지만 가능성이 높아집니다. 그 서버 프로세스는 스스로 쓰기를 발행해야합니다. 대화식 쿼리 지연.

18.4.5. 비동기 행동

explud_io_concurrency(정수)

동시 디스크 I/O 작업의 수를 설정합니다.토토 캔기대 캔 동시에 실행됩니다. 이 가치를 높이는 것이 좋습니다 개인의 I/O 운영 수를 늘리십시오토토 캔세션 병렬로 시작하려는 시도. 허용 범위는 1입니다 비동기 I/O의 발행을 비활성화하기 위해 1000 또는 0 요청.

이 설정의 좋은 출발점은 숫자입니다. Raid 0 Stripe 또는 Raid 1으로 구성된 별도의 드라이브 1 데이터베이스에 사용되는 미러. (Raid 5의 경우 패리티 드라이브를 계산해서는 안됩니다.) 그러나, 경우 데이터베이스는 종종 여러 쿼리로 바쁘다 동시 세션, 낮은 값이 충분할 수 있습니다 디스크 배열을 바쁘게 유지하십시오. 필요한 것보다 높은 값 디스크를 바쁘게 유지하면 추가 CPU 만 간접비.

메모리 기반 스토리지와 같은 이국적인 시스템의 경우 또는 버스 대역폭으로 제한되는 Raid 배열, 올바른 값은 사용 가능한 I/O 경로 수입니다. 최고를 찾기 위해서는 일부 실험이 필요할 수 있습니다 값.

비동기 I/O는 효과적인 것에 따라 다릅니다posix_fadvise기능 운영 체제 부족. 함수가없는 경우 그런 다음이 매개 변수를 0으로 설정하십시오 오류가 발생합니다. 일부 운영 체제 (예 : Solaris), 기능은 존재하지만 실제로는 그렇지 않습니다 뭐든지.