thepg_prewarm
모듈은 운영 체제 버퍼 캐시 또는에 관계 배트맨 토토를로드하는 편리한 방법을 제공합니다.PostgreSQL버퍼 캐시. Prewarming은를 사용하여 수동으로 수행 할 수 있습니다.pg_prewarm
함수, 또는 포함하여 자동으로 수행 할 수 있습니다pg_prewarm
inshared_preload_libraries. 후자의 경우, 시스템은 공유 버퍼의 내용을에 주기적으로 기록하는 백그라운드 작업자를 실행합니다.autoprewarm.blocks
2 명의 배경 작업자를 사용하여 다시 시작한 후 동일한 블록을 다시로드합니다.
pg_prewarm (regclass, 모드 텍스트 기본값 '버퍼', 포크 텍스트 기본값 'main',
첫 번째 인수는 전진하는 관계입니다. 두 번째 인수는 아래에 추가로 논의 된 바와 같이 사용될 예정인 방법이다.Main
. 네 번째 인수는 Prewarm (의 첫 번째 블록 번호입니다.null
는 0의 동의어로 받아 들여집니다). 다섯 번째 인수는 Prewarm의 마지막 블록 번호입니다 (null
관계의 마지막 블록을 통한 사전 무기를 의미합니다). 반환 값은 사전 블록의 수입니다.
사용 가능한 세 가지 예비 방법이 있습니다.prefetch
이것이 지원되는 경우 운영 체제에 비동기식 프리 페치 요청을 발행하거나 그렇지 않으면 오류를 던집니다..읽기
요청 된 블록 범위를 읽습니다. 같지 않은prefetch
, 이것은 동기식이며 모든 플랫폼과 빌드에서 지원되지만 느리게 될 수 있습니다.버퍼
요청 된 블록 범위를 데이터베이스 버퍼 캐시에 읽습니다.
이러한 방법 중 하나를 사용하면 캐시를 사용할 수있는 것보다 더 많은 블록을 예비하려고 시도합니다.prefetch
또는읽기
또는PostgreSQL사용시버퍼
-더 많은 번호가 매겨진 블록이 읽히기 때문에 더 낮은 수준의 블록이 퇴거 될 수 있습니다. 사전 무장 한 데이터도 캐시 퇴거로부터 특별한 보호를받지 않으므로 다른 시스템 활동이 읽기 직후 새로 사전 무장 한 블록을 퇴거시킬 수 있습니다. 반대로, 사전 무장하면 캐시에서 다른 데이터를 퇴거시킬 수도 있습니다.
autoprewarm_start_worker () 반환 void
주요 AutoPrewarm Worker를 시작하십시오. 이것은 일반적으로 자동으로 발생하지만 서버 시작 시간에 자동 Prewarm이 구성되지 않고 나중에 작업자를 시작하려는 경우 유용합니다..
autoprewarm_dump_now () reture int8
업데이트autoprewarm.blocks
즉시. AutoPrewarm 작업자가 실행되지 않지만 다음 재시작 후에 실행할 것으로 예상됩니다.autoprewarm.blocks
.
Robert Haas<rhaas@postgresql.org