2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 토토 캔 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.사설 토토 PostgreSQL : 문서 : 17 : 19.4. 자원 소비버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

17.4. 리소스 토토 캔

17.4.1. 메모리

shared_buffers (정수)

데이터베이스 서버가 사용하는 메모리 양을 설정토토 캔. 공유 메모리 버퍼. 기본값은 일반적으로 32입니다. 메가바이트(32MB), 하지만 그럴 수도 있습니다. 커널 설정이 이를 지원하지 않으면 더 적습니다(예: 동안 결정됨initdb). 이 설정은 다음과 같아야 합니다. 최소 128킬로바이트 및 최소 16킬로바이트 시간max_connections. (기본값이 아님BLCKSZ최소값을 변경토토 캔.) 그러나 설정이 크게 일반적으로 최소값보다 높은 값이 필요토토 캔. 성능. 수십 메가바이트가 권장됩니다. 생산 설치용. 이 매개변수는 서버 시작 시 설정됩니다.

이 매개변수를 늘리면 다음이 발생할 수 있습니다.포스트그레SQL추가 요청시스템 V공유 메모리 운영 체제의 기본 구성보다 허용토토 캔. 참조섹션 16.4.1용 해당 매개변수를 조정하는 방법에 대한 정보(해당하는 경우) 필요합니다.

temp_buffers (정수)

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

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

max_prepared_transactions (정수)

가능한 최대 트랜잭션 수를 설정토토 캔."준비됨"상태 동시에 (참조거래 준비). 이 매개변수를 0으로 설정하면 준비된 거래 기능. 기본값은 5입니다. 거래. 이 매개변수는 서버에서만 설정할 수 있습니다. 시작토토 캔.

준비된 트랜잭션을 사용하지 않는 경우, 이것은 매개변수를 0으로 설정할 수도 있습니다. 당신이 사용하는 경우 아마도 당신은 원할 것입니다.max_prepared_transactions적어도 만큼 크다max_connections, 준비 단계에서 원치 않는 실패를 방지토토 캔.

이 매개변수를 늘리면 다음이 발생할 수 있습니다.포스트그레SQL추가 요청시스템 V공유 메모리 운영 체제의 기본 구성보다 허용토토 캔. 참조섹션 16.4.1용 해당 매개변수를 조정하는 방법에 대한 정보(해당하는 경우) 필요합니다.

work_mem (정수)

내부에서 사용할 메모리 양을 지정토토 캔. 전환하기 전에 작업 및 해시 테이블을 정렬하십시오. 임시 디스크 파일. 값은 기본적으로 1입니다. 메가바이트(1MB). 참고로 복잡한 쿼리, 여러 가지 정렬 또는 해시 작업이 필요할 수 있습니다. 병렬로 실행; 각각은 다음과 같이 사용할 수 있습니다. 시작하기 전에 이 값이 지정하는 만큼의 메모리 데이터를 임시 파일에 넣습니다. 또한 여러 가지 실행 세션은 이러한 작업을 동시에 수행할 수 있습니다. 그래서 사용된 총 메모리는 다음 값의 몇 배가 될 수 있습니다.work_mem; 그것은 필요하다 값을 선택할 때 이 사실을 염두에 두십시오. 정렬 작업은 다음 용도로 사용됩니다.주문 으로, 독특및 병합 조인토토 캔. 해시 테이블은 해시 조인에 사용되며, 해시 기반 집계 및 해시 기반 처리IN하위 쿼리.

maintenance_work_mem (정수)

다음에 사용할 최대 메모리 양을 지정합니다. 유지 관리 작업(예:진공, 만들기 인덱스테이블 변경 추가 외래 키. 기본값은 16MB입니다(16MB). 이 작업 중 하나만 있기 때문에 데이터베이스 세션에 의해 한 번에 실행될 수 있으며 설치에는 일반적으로 많은 프로그램이 실행되지 않습니다. 동시에 이 값을 크게 설정하는 것이 안전토토 캔. 보다 큼work_mem. 더 크게 설정을 사용하면 진공 청소 및 청소 성능이 향상될 수 있습니다. 데이터베이스 덤프를 복원합니다.

max_stack_깊이 (정수)

서버의 최대 안전 깊이를 지정합니다 실행 스택. 이 매개변수의 이상적인 설정은 다음과 같습니다. 커널에 의해 적용되는 실제 스택 크기 제한(예: 에 의해 설정됨ulimit -s또는 로컬 이에 상응), 메가바이트 정도의 안전 여유가 줄어듭니다. 스택 깊이가 2이므로 안전 마진이 필요토토 캔. 서버의 모든 루틴을 체크인하지는 않았지만 표현식과 같은 잠재적으로 재귀적인 주요 루틴 평가. 기본 설정은 2MB입니다. (2MB), 이는 보수적으로 작고 충돌 위험이 거의 없습니다. 그러나 복잡한 기능을 실행하기에는 너무 작습니다. 만 슈퍼유저는 이 설정을 변경할 수 있습니다.

설정max_stack_깊이실제 커널 제한보다 높으면 폭주 재귀 함수는 개인을 충돌시킬 수 있습니다 백엔드 프로세스. 다음과 같은 플랫폼에서포스트그레SQL커널을 결정할 수 있습니다 제한이 있으므로 이 변수를 안전하지 않은 변수로 설정할 수 없습니다. 가치. 그러나 모든 플랫폼이 다음을 제공하는 것은 아닙니다. 정보를 제공하므로 선택 시 주의가 필요합니다. 값.

17.4.2. 여유 공간 지도

이 매개변수는 공유 크기를 제어토토 캔.여유 공간 지도, 위치를 추적합니다. 데이터베이스의 사용되지 않은 공간. 크기가 작은 여유 공간 맵은 다음과 같습니다. 데이터베이스가 점점 더 많은 디스크 공간을 소비하게 만듭니다. 시간이 지남에 따라 지도에 없는 여유 공간은 재사용; 대신토토 캔운영 체제에서 추가 디스크 공간을 요청하는 경우 새로운 데이터를 저장해야 토토 캔. 표시되는 마지막 몇 줄 데이터베이스 전체진공 장황함명령 현재 설정이 적절한지 확인하는 데 도움이 될 수 있습니다. 갑공지메시지는 다음 중에도 인쇄됩니다. 현재 설정이 너무 낮은 경우 이러한 작업이 수행됩니다.

이 매개변수를 늘리면 다음이 발생할 수 있습니다.토토 캔추가 요청시스템 V당신의 운영보다 공유 메모리 시스템의 기본 구성에서는 허용됩니다. 참조섹션 16.4.1용 해당 매개변수를 조정하는 방법에 대한 정보(해당하는 경우) 필요합니다.

max_fsm_pages (정수)

사용 가능한 최대 디스크 페이지 수를 설정합니다. 공간은 공유된 여유 공간 맵에서 추적됩니다. 여섯 각 페이지 슬롯마다 공유 메모리 바이트가 소비됩니다. 이 설정은 16* 이상이어야 합니다.max_fsm_relations. 기본값이 선택됨 으로initdb에 따라 다름 사용 가능한 메모리 양이며 범위는 20k에서 20만 페이지. 이 매개변수는 서버에서만 설정할 수 있습니다. 시작합니다.

max_fsm_relations (정수)

관계(테이블 및 테이블)의 최대 수를 설정합니다. 인덱스)에서 여유 공간을 추적할 수 있습니다. 공유 자유 공간 맵. 대략 70바이트의 공유 각 슬롯마다 메모리가 소비됩니다. 기본값은 1개입니다. 천 관계. 이 매개변수는 다음에서만 설정할 수 있습니다. 서버 시작.

17.4.3. 커널 리소스 사용법

max_files_per_process (정수)

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

shared_preload_libraries (문자열)

이 변수는 하나 이상의 공유 라이브러리를 지정합니다 서버 시작 시 미리 로드됩니다. 그 이상인 경우 하나의 라이브러리를 로드하려면 이름을 다음과 같이 구분하세요. 쉼표. 예를 들어,'$libdir/mylib'원인이 될 것입니다mylib.so(또는 일부 플랫폼에서는,mylib.sl)가 사전 로드됩니다. 설치의 표준 라이브러리 디렉토리. 이 매개변수 서버 시작 시에만 설정할 수 있습니다.

포스트그레SQL절차적 언어 라이브러리는 이런 방식으로 미리 로드될 수 있습니다. 일반적으로 구문을 사용하여'$libdir/plXXX'어디에서XXXispgsql, , tcl또는파이썬.

공유 라이브러리를 미리 로드하면 라이브러리가 시작됩니다. 라이브러리를 처음 사용할 때 시간을 피할 수 있습니다. 그러나, 각각의 새로운 서버 프로세스를 시작하는 데 걸리는 시간이 늘어날 수 있습니다. 해당 프로세스가 라이브러리를 전혀 사용하지 않더라도 약간 그렇습니다. 그래서 이 매개변수는 다음과 같은 라이브러리에만 권장됩니다. 대부분의 세션에서 사용됩니다.

참고:Windows 호스트에서 서버 시작 시 라이브러리는 시간을 줄이지 않습니다. 각각의 새로운 서버 프로세스를 시작하는 데 필요토토 캔. 각각 서버 프로세스는 모든 사전 로드 라이브러리를 다시 로드토토 캔. 그러나shared_preload_libraries아직 일부 공유 라이브러리 때문에 Windows 호스트에서 유용토토 캔. 소요되는 특정 작업을 수행해야 할 수도 있습니다. postmaster start에 배치토토 캔(예: 공유 도서관은 경량 잠금 장치를 예약해야 할 수도 있습니다. 공유 메모리를 사용하면 그 이후에는 그렇게 할 수 없습니다. 우체국장이 시작했습니다).

지정된 라이브러리를 찾을 수 없으면 서버는 시작하지 못했습니다.

모든 토토 캔 지원 라이브러리에는"마법 블록"보증을 위해 확인되었습니다. 호환성. 이러한 이유로 토토 캔이 아닌 라이브러리는 이 방법으로는 로드할 수 없습니다.

17.4.4. 비용 기반 진공 지연

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

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

이 기능은 기본적으로 비활성화되어 있습니다. 활성화하려면 다음을 설정하세요.vacuum_cost_delay변수를 0이 아닌 값입니다.

vacuum_cost_delay (정수)

프로세스가 수행되는 시간(밀리초) 비용 한도를 초과하면 잠자기 상태가 됩니다. 는 기본값은 0이며, 이는 비용 기반 진공 지연 기능. 양수 값을 사용하면 비용 기반이 가능합니다. 진공청소기. 많은 시스템에서 효과적인 수면 지연 해결은 10밀리초입니다. 설정vacuum_cost_delay값으로 10의 배수가 아닌 경우에는 다음과 같은 결과가 나올 수 있습니다. 다음으로 높은 10의 배수로 설정합니다.

vacuum_cost_page_hit (정수)

에 있는 버퍼를 진공 청소하는 데 드는 예상 비용은 다음과 같습니다. 공유 버퍼 캐시. 잠그는 데 드는 비용을 나타냅니다. 버퍼 풀, 공유 해시 테이블을 조회하고 스캔 페이지의 내용. 기본값은 1입니다.

vacuum_cost_page_miss (정수)

필요한 버퍼를 진공 청소하는 데 드는 예상 비용 디스크에서 읽을 수 있습니다. 이는 자물쇠를 잠그려는 노력을 나타냅니다. 버퍼 풀, 공유 해시 테이블 조회, 읽기 원하는 블록을 디스크에서 차단하고 해당 내용을 스캔합니다. 는 기본값은 10입니다.

vacuum_cost_page_dirty (정수)

진공 장치를 수정할 때 청구되는 예상 비용입니다. 이전에 깨끗했던 블록. 그것은 여분의 것을 나타냅니다 더티 블록을 다시 디스크로 플러시하려면 I/O가 필요합니다. 기본값은 20입니다.

vacuum_cost_limit (정수)

청소를 유발하는 누적 비용 잠드는 과정. 기본값은 200입니다.

참고:특정 작업이 있습니다. 중요한 잠금이므로 최대한 빨리 완료되어야 합니다. 가능합니다. 이러한 기간에는 비용 기반 진공 지연이 발생하지 않습니다. 운영. 따라서 비용이 발생할 수 있습니다. 지정된 한도보다 훨씬 더 많이 축적됩니다. 피하려면 이러한 경우 쓸데없이 긴 지연이 발생하므로 실제 지연은 다음과 같습니다. 다음과 같이 계산됨vacuum_cost_delay * accumulated_balance / vacuum_cost_limit최대vacuum_cost_delay * 4.

17.4.5. 배경 작가

시작포스트그레SQL8.0에는 다음과 같은 별도의 서버 프로세스가 있습니다.백그라운드 작가, 그 유일한 기능은 문제 쓰기"더러운"공유됨 버퍼. 의도는 사용자를 처리하는 서버 프로세스입니다. 쿼리는 쓰기를 기다리는 경우가 거의 없거나 전혀 없어야 합니다. 왜냐하면 배경 작가가 그것을 할 것이기 때문입니다. 이 배열은 또한 관련된 성능 저하를 줄입니다. 체크포인트와 함께. 배경 작가는 지속적으로 더티 페이지를 디스크로 조금씩 나누어서 몇 페이지만 대신 체크포인트 시간이 되면 강제로 퇴장시켜야 합니다. 이전에 각각 발생했던 더티 버퍼 쓰기의 폭풍 검문소. 그러나 I/O는 전체적으로 순 증가합니다. 반복적으로 더러워진 페이지가 이전에 로드되었을 수 있기 때문입니다. 체크포인트 간격당 한 번만 기록되었으며 배경은 작가는 같은 간격으로 여러 번 쓸 수도 있습니다. 에서 대부분의 상황에서는 주기적 저부하가 지속적으로 낮은 부하를 받는 것이 더 좋습니다. 스파이크가 발생하지만 이 하위 섹션에서 논의되는 매개변수는 다음과 같습니다. 지역적 필요에 맞게 동작을 조정하는 데 사용됩니다.

bgwriter_delay (정수)

다음에 대한 활동 라운드 사이의 지연을 지정합니다. 배경작가. 각 라운드에서 작가 문제는 글을 씁니다. 일부 더티 버퍼의 경우(에 의해 제어 가능) 다음 매개변수). 그런 다음 잠을 잔다.bgwriter_delay밀리초, 그리고 반복됩니다. 기본값은 200밀리초(200ms). 많은 시스템에서 수면 지연의 효과적인 해결 방법은 10밀리초입니다. 설정bgwriter_delay에 10의 배수가 아닌 값은 동일할 수 있습니다. 결과는 10의 다음으로 높은 배수로 설정되는 것입니다. 이 매개변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버에 명령줄.

bgwriter_lru_percent (부동 소수점)

서버 프로세스가 자체 쓰기, 배경 작성자를 발행해야 합니다. 재활용될 가능성이 있는 버퍼를 쓰려고 시도합니다. 곧. 각 라운드에서 최대bgwriter_lru_percent버퍼 중 재활용에 가장 가깝고 재활용 가능한 항목을 작성합니다. 더러운. 기본값은 1.0(전체 수의 1%)입니다. 공유 버퍼의 수). 이 매개변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버 명령줄.

bgwriter_lru_maxpages (정수)

각 라운드마다 이만큼의 버퍼가 사용됩니다. 곧 재활용될 스캔 결과로 작성됨 버퍼. 기본값은 5개의 버퍼입니다. 이 매개변수는에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버에 명령줄.

bgwriter_all_percent (부동 소수점)

필요한 작업량을 줄이기 위해 체크포인트 시간이 지나면 백그라운드 작성자도 다음 작업을 수행합니다. 전체 버퍼 풀을 통한 순환 스캔, 쓰기 더러워진 것으로 확인된 버퍼. 각 라운드마다, 최대 검사bgwriter_all_percent버퍼 중 이 목적. 기본값은 0.333(0.333%)입니다. 총 공유 버퍼 수). 기본값으로bgwriter_delay설정, 이 전체 공유 버퍼 풀을 스캔할 수 있습니다. 1분에 한 번 정도. 이 매개변수는 다음에서만 설정할 수 있습니다.토토 캔.conf파일 또는 서버 명령줄.

bgwriter_all_maxpages (정수)

각 라운드마다 이만큼의 버퍼가 사용됩니다. 전체 버퍼를 스캔한 결과로 기록됨 수영장. (이 제한에 도달하면 검색이 중지되고 다음 라운드 동안 다음 버퍼에서 재개됩니다.) 기본값은 5개의 버퍼입니다. 이 매개변수는 에 설정토토 캔.conf파일 또는 서버 명령줄에서.

더 작은 값bgwriter_all_percent그리고bgwriter_all_maxpages추가 I/O 로드 감소 배경 작가 때문에 발생했지만 더 많은 작업을 수행해야 합니다. 체크포인트 시간에. 체크포인트에서 로드 급증을 줄이려면 이 두 값을 늘리십시오. 마찬가지로, 더 작은 값의bgwriter_lru_percent그리고bgwriter_lru_maxpages추가 I/O 로드 감소 배경 작가에 의해 발생했지만 그럴 가능성이 더 높습니다. 서버 프로세스는 스스로 쓰기 작업을 수행해야 합니다. 대화형 쿼리를 지연합니다. 배경 쓰기를 비활성화하려면 완전히, 둘 다 설정최대 페이지값 그리고/또는 둘 다퍼센트값 제로.