몇 가지가 있습니다롤 토토데이터베이스 성능에 영향을 미치는 관련 구성 매개 변수. 이 섹션에서는 사용을 설명합니다. 찾다제 19 장서버 구성 매개 변수 설정에 대한 일반 정보.
체크 포인트는 힙 및 인덱스 데이터 파일이 해당 체크 포인트 앞에 작성된 모든 정보로 업데이트되었음을 보장하는 일련의 트랜잭션의 포인트입니다. 체크 포인트 시간에 모든 더러운 데이터 페이지가 디스크로 플러시되고 특수 체크 포인트 레코드가 로그 파일에 기록됩니다. (변경 레코드는 이전에 <에 세척되었습니다.롤 토토files.) 충돌이 발생하면 충돌 복구 절차는 최신 체크 포인트 레코드를보고 로그의 포인트 (Redo 레코드라고 함)를 결정하여 레디 작업을 시작해야합니다. 해당 지점 이전의 데이터 파일에 대한 변경 사항은 이미 디스크에 보장됩니다. 따라서, 체크 포인트 후, 레다 레코드를 포함하는 로그 세그먼트는 더 이상 필요하지 않으며 재활용 또는 제거 할 수 있습니다. (언제롤 토토아카이빙이 완료되고 있으며, 로그 세그먼트는 재활용되거나 제거되기 전에 보관해야합니다.)
The checkpoint requirement of flushing all dirty data pages to disk can cause a significant I/O load. 이러한 이유로, 체크 포인트 활동은 조절되어 I/O가 Checkpoint 시작에서 시작하여 다음 체크 포인트가 시작되기 전에 완료되도록합니다. this minimizes performance degradation during checkpoints.
서버의 체크 포인터 프로세스는 자주 검사 점을 자동으로 수행합니다. 체크 포인트가 시작됩니다Checkpoint_Timeout초, ifmax_롤 토토_size가 초과 될 예정입니다. 기본 설정은 각각 5 분 및 1GB입니다. 이전 체크 포인트 이후 롤 토토이 작성되지 않은 경우, 새로운 체크 포인트가 건너 뜁니다.Checkpoint_Timeout
통과했습니다. (롤 토토 아카이브가 사용 중이고 잠재적 데이터 손실에 결합하기 위해 파일이 자주 보관되어 얼마나 자주 한계를두고 싶다면 조정해야합니다.archive_timeout체크 포인트 매개 변수가 아닌 매개 변수.) SQL 명령을 사용하여 체크 포인트를 강제 할 수도 있습니다Checkpoint
.
감소Checkpoint_Timeout
및/또는max_롤 토토_size
체크 포인트가 더 자주 발생합니다. 이를 통해 작업이 적은 작업이 적을 필요가 있기 때문에 더 빨리 충돌 후 복구를 가능하게합니다. 그러나 더러운 데이터 페이지를 플러시하는 비용 증가와 더 자주이를 균형을 유지해야합니다. 만약에full_page_writes(기본값과 마찬가지로) 설정되어 있으며 고려해야 할 또 다른 요소가 있습니다. 데이터 페이지 일관성을 보장하기 위해 각 체크 포인트 후 데이터 페이지를 첫 번째 수정하면 전체 페이지 컨텐츠를 기록합니다. 이 경우 더 적은 체크 포인트 간격이 롤 토토 로그에 출력의 양을 증가시켜 부분적으로 더 작은 간격을 사용하는 목표를 부정하고, 어쨌든 더 많은 디스크 I/O..
체크 포인트는 상당히 비싸다. 먼저 현재 더러운 버퍼를 기록해야하기 때문에 두 번째는 위에서 논의한대로 후속 롤 토토 트래픽을 초래하기 때문에 두 번째. 따라서 체크 포인트 매개 변수를 충분히 높게 설정하여 체크 포인트가 너무 자주 발생하지 않도록하는 것이 좋습니다. 체크 포인팅 매개 변수에 대한 간단한 정신 점검으로를 설정할 수 있습니다.Checkpoint_warning매개 변수. 체크 포인트가보다 더 가까워지면Checkpoint_warning
초, 메시지가 서버 로그에 출력됩니다.max_롤 토토_size
. 이러한 메시지의 경우 가끔 나타나는 것은 경보의 원인이 아니지만 자주 나타나면 체크 포인트 제어 매개 변수를 증가시켜야합니다. Bulk operations such as largeCOPY
전송으로 인해 설정하지 않은 경우 많은 경고가 나타날 수 있습니다max_롤 토토_size
충분히.
페이지 쓰기가 버스트로 I/O 시스템에 침수를 피하기 위해 체크 포인트 중에 더러운 버퍼를 쓰는 것은 일정 기간 동안 퍼집니다. 그 기간은에 의해 제어됩니다.Checkpoint_Completion_TARGET, 이는 체크 포인트 간격의 일부로 제공됩니다. 주어진 비율의시 체크 포인트가 완료되도록 I/O 속도가 조정됩니다.Checkpoint_Timeout
초가 경과했거나 그 이전에max_롤 토토_size
더 빨리 초과됩니다. 기본값 0.5,postgresql다음 체크 포인트가 시작되기 전에 각 체크 포인트를 약 절반으로 완료 할 수 있습니다. 정상 작동 중 최대 I/O 처리량에 매우 가까운 시스템에서는 증가하고 싶을 수도 있습니다Checkpoint_Completion_TARGET
체크 포인트에서 I/O 부하를 줄이기 위해. 이에 대한 단점은 연장 된 체크 포인트가 복구 시간에 영향을 미친다는 것입니다. 더 많은 월 세그먼트가 복구에 사용할 수 있도록 보관해야하기 때문입니다. 하지만Checkpoint_Completion_TARGET
| 1.0으로 설정할 수 있습니다. 체크 포인트에는 더러운 버퍼를 쓰는 것 외에 다른 활동이 포함되어 있기 때문에 그보다 덜 (최대 0.9)를 유지하는 것이 가장 좋습니다. 1.0의 설정은 체크 포인트가 제 시간에 완료되지 않을 가능성이 높으므로 필요한 롤 토토 세그먼트 수의 예상치 못한 변화로 인해 성능 손실이 발생합니다..
Linux 및 Posix 플랫폼에서Checkpoint_flush_after구성 가능한 수의 바이트 후 체크 포인트에서 작성한 페이지를 디스크로 플러시 해야하는 OS를 강제로 강제 할 수 있습니다. 그렇지 않으면,이 페이지는 OS의 페이지 캐시에 보관되어있을 때 마구간을 유도 할 수 있습니다.fsync
는 체크 포인트 끝에 발행됩니다. 이 설정은 종종 트랜잭션 대기 시간을 줄이는 데 도움이되지만 성능에 악영향을 미칠 수도 있습니다. 특히보다 큰 작업량의 경우shared_buffers이지만 OS의 페이지 캐시보다 작습니다.
롤 토토 세그먼트 파일의 수PG_롤 토토
디렉토리에 따라min_롤 토토_size
, max_롤 토토_size
및 이전 체크 포인트 사이클에서 생성 된 롤 토토의 양. 이전 로그 세그먼트 파일이 더 이상 필요하지 않은 경우 제거되거나 재활용됩니다 (즉, 번호가 매겨진 시퀀스의 미래 세그먼트가되도록 이름이 바뀌 었습니다). 로그 출력 속도의 단기 피크로 인해max_롤 토토_size
를 초과하면, 불필요한 세그먼트 파일은 시스템 이이 한계에 따라 다시 돌아올 때까지 제거됩니다. 이 한계 아래에서 시스템은 다음 체크 포인트까지 추정 된 요구를 커버하기에 충분한 책치 파일을 재활용하고 나머지를 제거합니다. 추정치는 이전 체크 포인트주기에 사용 된 롤 토토 파일 수의 이동 평균을 기준으로합니다. 실제 사용이 추정치를 초과하면 이동 평균이 즉시 증가하므로 평균 사용량이 아닌 피크 사용량을 어느 정도 수용합니다.min_롤 토토_size
향후 사용을 위해 재활용 된 책치 파일의 양에 최소값을 부여합니다. 시스템이 유휴 상태이고 롤 토토 사용량 추정치에도 불구하고 롤 토토은 항상 향후 사용을 위해 재활용됩니다.
독립적으로max_롤 토토_size
, 가장 최근롤 토토_Keep_SizeMegabytes of 롤 토토 파일과 하나의 추가 롤 토토 파일은 항상 보관됩니다. 또한 롤 토토 아카이빙을 사용하는 경우 이전 세그먼트를 보관할 때까지 제거하거나 재활용 할 수 없습니다. 롤 토토 아카이브가 롤 토토이 생성되는 속도를 따라 잡을 수 없거나 ifarchive_command
반복적으로 실패하면, 오래된 왈 파일은PG_롤 토토
상황이 해결 될 때까지. 복제 슬롯을 사용하는 느리거나 실패한 대기 서버는 동일한 효과를 갖습니다 (참조섹션 26.2.6).
아카이브 복구 또는 대기 모드에서 서버가 정기적으로 수행됩니다RETARTPOINTS,정상 작동의 검문소와 유사한 : 서버는 모든 상태를 디스크로 강제하고 업데이트PG_CONTROL
파일은 이미 처리 된 롤 토토 데이터를 다시 스캔 할 필요가 없음을 나타내고의 이전 로그 세그먼트 파일을 재활용합니다.PG_롤 토토
디렉토리. 재시작 점은 체크 포인트 레코드에서만 수행 할 수 있기 때문에 마스터의 검문소보다 재시작소를 더 자주 수행 할 수 없습니다. 최소한 체크 포인트 레코드에 도달하면 다시 시작점이 트리거됩니다Checkpoint_Timeout
마지막 재시작 포인트 이후로, 또는 월 크기가 초과 될 경우max_롤 토토_size
. 그러나 다시 시작점을 수행 할 수있는 시점에 대한 제한이 있기 때문에max_롤 토토_size
is often exceeded during recovery, by up to one checkpoint cycle's worth of 롤 토토. (max_롤 토토_size
is never a hard limit anyway, so you should always leave plenty of headroom to avoid running out of disk space.)
일반적으로 사용되는 두 가지가 있습니다롤 토토기능 :XLogInsertRecord
andxlogflush
. xloginsertrecord
새 레코드를에 배치하는 데 사용됩니다.롤 토토공유 메모리의 버퍼. 새 기록을위한 공간이 없다면xloginsertrecord
작성해야합니다 (커널 캐시로 이동).롤 토토버퍼. 이것은 바람직하지 않기 때문에xloginsertrecord
는 영향을받는 데이터 페이지에서 독점 잠금을 유지할 때 모든 데이터베이스 저 레벨 수정 (예 : 행 삽입)에서 사용되므로 최대한 빨리 작동해야합니다. 더 나쁜 것은 글쓰기롤 토토버퍼는 또한 새로운 로그 세그먼트의 생성을 강요 할 수 있으며, 이는 더 많은 시간이 걸립니다. 보통,롤 토토버퍼는 AN에 의해 작성되고 플러시되어야합니다xlogflush
트랜잭션 커밋 시간에서 트랜잭션 레코드가 영구적 인 스토리지로 플러시되도록하는 요청. 로그 출력이 높은 시스템에서xlogflush
요청은 자주 예방하기에 충분하지 않을 수 있습니다xloginsertrecord
쓰기를해야합니다. 그러한 시스템에서는의 수를 늘려야합니다.롤 토토수정하여 버퍼롤 토토_buffers매개 변수. 언제full_page_writes가 설정되어 있고 시스템이 매우 바쁘고 설정롤 토토_buffers
Higher는 각 체크 포인트 바로 다음 기간 동안 응답 시간을 원활하게하는 데 도움이됩니다.
theCommit_Delay매개 변수는 단체 커밋 리더 프로세스가 잠금을 획득 한 후 잠을자는 마이크로 초에 대해 정의합니다xlogflush
, 그룹 커밋 추종자들은 리더 뒤에서 대기합니다. 이 지연을 통해 다른 서버 프로세스는 Commit Records를 롤 토토 버퍼에 추가하여 리더의 최종 동기화 작업에 의해 모두 플러시되도록합니다. 이면 수면이 발생하지 않습니다.fsync활성화되지 않았거나보다 적은 경우Commit_Siblings다른 세션은 현재 활성 거래 중입니다. 이것은 다른 세션이 곧 커밋 될 가능성이 낮은 경우 수면을 피합니다. 일부 플랫폼에서 수면 요청의 해상도는 10 밀리 초이므로 0이 아닌Commit_Delay
1에서 10000 마이크로 초 사이의 설정은 동일한 효과를 갖습니다. 일부 플랫폼에서는 수면 작업이 매개 변수에서 요청한 것보다 약간 더 오래 걸릴 수 있습니다.
의 목적 이후Commit_Delay
는 동시에 거래를 통해 (잠재적으로 트랜잭션 대기 시간을 희생 시키면) 각 플러시 작업의 비용이 상각되도록하는 것입니다. 설정을 지능적으로 선택하기 전에 해당 비용을 정량화해야합니다. 비용이 높을수록 더 효과적입니다Commit_Delay
는 거래 처리량을 증가시킬 것으로 예상됩니다. 그만큼PostgreSQL : 문서프로그램을 사용하여 단일 롤 토토 플러시 작업이 취하는 마이크로 초의 평균 시간을 측정 할 수 있습니다. 단일 8KB 쓰기 작업 후에 프로그램이 플러시하는 데 걸리는 평균 시간의 절반의 값은 종종 가장 효과적인 설정입니다Commit_Delay
,이 값은 특정 작업량을 최적화 할 때 사용할 시작점으로 권장됩니다. 조정하는 동안Commit_Delay
롤 토토 로그가 고지도 회전 디스크에 저장 될 때 특히 유용하며, 솔리드 스테이트 드라이브 또는 배터리에 접근 된 쓰기 캐시가있는 RAID 어레이와 같은 매우 빠른 동기화 시간이있는 스토리지 미디어에서도 이점이 중요 할 수 있습니다. 그러나 이것은 분명히 대표적인 워크로드에 대해 테스트해야합니다. 더 높은 값Commit_Siblings
그러한 경우에 사용해야하는 반면Commit_Siblings
값은 종종 높은 대기 시간 매체에 도움이됩니다. 의 설정이 가능하다는 점에 유의하십시오.Commit_Delay
너무 높아서 총 트랜잭션 처리량이 어려워 질 수 있습니다.
언제Commit_Delay
는 0으로 설정되어 있으며 (기본값), 그룹 커밋 형태가 여전히 발생할 수 있지만 각 그룹은 이전 플러시 작업 (있는 경우)이 발생하는 창에서 커밋 레코드를 플러시 해야하는 지점에 도달하는 세션으로 만 구성됩니다. 더 높은 클라이언트에서는 A“통로 효과”발생하는 경향이 있으므로 그룹 커밋의 영향이 중요해도Commit_Delay
0이므로 명시 적으로 설정Commit_Delay
덜 도움이되는 경향이 있습니다. 환경Commit_Delay
(1) 동시에 거래하는 거래가있을 때만 도움을 줄 수 있으며 (2) 처리량은 어느 정도 커밋 비율로 제한됩니다. 그러나 회전 대기 시간이 높으면이 설정은 두 명의 클라이언트 (즉, 한 형제 거래를 가진 단일 커밋 클라이언트)로 트랜잭션 처리량을 늘리는 데 효과적 일 수 있습니다..
the롤 토토_sync_method매개 변수 결정 방법PostgreSQL커널에 강제를 요청합니다롤 토토디스크로 업데이트. 모든 옵션은 신뢰성 측면에서 동일해야합니다.fsync_writethrough
, 다른 옵션이 그렇게하지 않더라도 디스크 캐시의 플러시를 강제 할 수 있습니다. 그러나 가장 빠른 플랫폼 특정입니다. 를 사용하여 다양한 옵션의 속도를 테스트 할 수 있습니다.PostgreSQL : 문서프로그램. 이 매개 변수는이라면 관련이 없습니다.fsync
꺼졌습니다.
활성화롤 토토_debug구성 매개 변수 (제공PostgreSQL지원을 통해 편집되었습니다.xloginsertrecord
andXLogFlush
롤 토토서버 로그에 로그인하는 통화. 이 옵션은 향후보다 일반적인 메커니즘으로 대체 될 수 있습니다.
문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면