postgresql 배경 프로 세 스 backgroud writer

4648 단어 PostgreSQL
데 이 터 를 처리 하기 전에 디스크 에서 메모리 로 데 이 터 를 읽 어야 합 니 다. 업데이트 가 끝 난 후에 수 정 된 데 이 터 를 디스크 에 다시 쓰 고 post gresql 데이터 에서 backgroud writer 와 server process 가 책임 집 니 다."데 이 터 는 디스크 에 기록 합 니 다. 데이터 베 이 스 는 flush 데 이 터 를 대체적으로 실행 합 니 다. 먼저 backgroud writer 프로 세 스 가 작성 하고 나머지 데 이 터 는 server process 프로 세 스 가 완성 합 니 다."
backgroud writer 프로 세 스 가 데 이 터 를 쓰 는 데 영향 을 주 는 매개 변 수 는 다음 과 같 습 니 다. bgwriter delay: backgroud writer 프로 세 스 가 두 번 연속 flush 데이터 사이 의 시간 간격 입 니 다. 기본 값 은 200 이 고 단 위 는 밀리초 입 니 다. bgwriter lru maxpages: backgroud writer 프로 세 스 가 쓸 때마다 가장 많은 데 이 터 량 입 니 다. 기본 값 은 100 이 고 단위 buffers 입 니 다. 더러 운 데 이 터 량 이 이 수치 보다 적 으 면 쓰기 동작 이 전부 입 니 다.부 서 는 backgroud writer 프로 세 스 로 이 루어 집 니 다. 반대로 이 값 보다 클 때 큰 부분 은 server process 프로 세 스 로 이 루어 집 니 다. 이 값 을 0 으로 설정 하면 backgroud writer 로 프로 세 스 를 쓰 지 않 고 server process 로 이 루어 집 니 다. - 1 로 설정 하면 모든 더러 운 데 이 터 는 backgroud writer 로 이 루어 집 니 다. (checkpoint 작업 은 포함 되 지 않 습 니 다)bgwriter lru multiplier: 이 매개 변 수 는 디스크 에 데이터 블록 을 쓸 때마다 수 를 표시 합 니 다. 물론 이 값 은 bgwriter lru maxpages 보다 작 아야 합 니 다. 너무 오래 설정 하면 기록 해 야 할 더러 운 데 이 터 량 이 매번 기록 해 야 하 는 데 이 터 량 보다 많 습 니 다. 디스크 에 기록 해 야 할 작업 은 server process 프로 세 스 가 필요 합 니 다. 성능 이 떨 어 집 니 다. 값 설정 이 너무 크 면 기록 한 더러 운 데 이 터 량 이 많다 는 것 을 설명 합 니 다.이 매개 변 수 는 기본 값 2.0 입 니 다. bgwriter 의 최대 데 이 터 량 계산 방식: 1000 / bgwriter delay * bgwriter lru maxpages * 8K = 최대 데 이 터 량 상기 매개 변 수 는 데이터 파일 이 있 는 디스크 의 대역 폭 에 도 참고 가치 가 있 습 니 다. 매개 변 수 는 시스템 상태 에 따라 설 정 됩 니 다., 모니터링 시스템 의 운행 상황 을 통 해 분석 하고 정리 합 니 다. 매개 변수 에 적합 한 값 을 설정 합 니 다. 데이터 사전 pg stat bgwriter 를 참고 하 십시오.

  
    
postgres=# \d pg_stat_bgwriter
View
"pg_catalog.pg_stat_bgwriter"
Column
| Type | Modifiers
--------------------+--------+-----------
checkpoints_timed
| bigint |
checkpoints_req
| bigint |
buffers_checkpoint
| bigint |
buffers_clean
| bigint |
maxwritten_clean
| bigint |
buffers_backend
| bigint |
buffers_alloc
| bigint |
View definition:
SELECT pg_stat_get_bgwriter_timed_checkpoints() AS checkpoints_timed, pg_stat_get_bgwriter_requested_checkpoints() AS checkpoints_req, pg_stat_get_bgwriter_buf_written_checkpoints() AS buffers_checkpoint, pg_stat_get_bgwriter_buf_written_clean() AS buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, pg_stat_get_buf_written_backend() AS buffers_backend, pg_stat_get_buf_alloc() AS buffers_alloc;

 
주: postgresql 의 더러 운 데이터 기록 은 backgroud writer 매개 변수 에 의 해 결정 되 는 것 이 아니 라 checkpoint 도 더러 운 데이터 의 기록 을 제어 합 니 다.
backgroud writer 프로 세 스 의 간격 은 밀리초 로 계산 되 며, checkpoint 의 간격 은 상대 적 으로 깁 니 다. 따라서 bgwriter 는 checkpoint 의 주기 내 에 더러 운 데 이 터 를 기록 하 는 것 과 같 습 니 다. 따라서 bgwriter 프로 세 스 가 주기 적 으로 균일 한 데 이 터 를 기록 할 수 있다 면 IO 의 횟수 를 줄 이 는 동시에 명중률 도 높 일 수 있 고, checkpoint 에 도 스트레스 를 줄 일 수 있 습 니 다.집중 적 인 기록 작업 이 발생 하지 않 고 IO 가 사용 하 는 높 은 수 치 를 초래 할 뿐만 아니 라 시스템 자원 에 대한 시험 도 더욱 낮 추 었 다 고 할 수 있다.

좋은 웹페이지 즐겨찾기