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