이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 28.5. 메이저 토토 사이트 구성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

30.4. 토토 캔구성

몇 가지가 있습니다토토 캔데이터베이스 성능에 영향을 미치는 관련 구성 매개 변수. 이 섹션에서는 사용을 설명합니다. 찾다19 장서버 구성 매개 변수 설정에 대한 일반 정보.

체크 포인트는 힙 및 인덱스 데이터 파일이 해당 체크 포인트 앞에 작성된 모든 정보로 업데이트되었음을 ​​보장하는 일련의 트랜잭션의 포인트입니다. 체크 포인트 시간에 모든 더러운 데이터 페이지가 디스크로 플러시되고 특수 체크 포인트 레코드가 로그 파일에 기록됩니다. (변경 레코드는 이전에 <에 세척되었습니다.토토 캔files.) 충돌이 발생하면 충돌 복구 절차는 최신 체크 포인트 레코드를보고 로그의 포인트 (레다 레코드라고 함)를 결정하여 다시 작업을 시작해야합니다. 해당 지점 이전의 데이터 파일에 대한 변경 사항은 이미 디스크에 보장됩니다. 따라서, 체크 포인트 후, 레다 레코드를 포함하는 로그 세그먼트는 더 이상 필요하지 않으며 재활용 또는 제거 할 수 있습니다. (언제토토 캔​​아카이빙이 완료되고 있으며, 로그 세그먼트는 재활용되거나 제거되기 전에 보관해야합니다.)

모든 더러운 데이터 페이지를 디스크로 플러시하는 체크 포인트 요구 사항은 상당한 I/O로드를 유발할 수 있습니다. 이러한 이유로, 체크 포인트 활동은 조절되어 I/O가 Checkpoint 시작에서 시작하여 다음 체크 포인트가 시작되기 전에 완료되도록합니다. 이것은 체크 포인트 중 성능 저하를 최소화합니다.

서버의 체크 포인터 프로세스는 자주 검사 점을 자동으로 수행합니다. 체크 포인트가 시작됩니다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. 때때로 이러한 메시지의 모양은 경보의 원인이 아니지만 자주 나타나면 체크 포인트 제어 매개 변수를 증가시켜야합니다. 대량과 같은 벌크 작업COPY전송으로 인해 설정하지 않은 경우 그러한 경고가 여러 개나 나타날 수 있습니다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_segments+ 1 가장 최근의 책치 파일은 항상 유지됩니다. 또한 토토 캔 아카이빙을 사용하는 경우 이전 세그먼트를 보관할 때까지 제거하거나 재활용 할 수 없습니다. 토토 캔 아카이브가 토토 캔이 생성되는 속도를 따라 잡을 수 없거나 ifarchive_command반복적으로 실패하면, 오래된 왈 파일은PG_토토 캔상황이 해결 될 때까지. 복제 슬롯을 사용하는 느리거나 실패한 대기 서버는 동일한 효과를 갖습니다 (참조섹션 26.2.6).

아카이브 복구 또는 대기 모드에서 서버가 정기적으로 수행됩니다RETARTPOINTS,정상 작동의 검문소와 유사한 : 서버는 모든 상태를 디스크로 강제하고 업데이트PG_CONTROL파일은 이미 처리 된 토토 캔 데이터를 다시 스캔 할 필요가 없음을 나타내고의 이전 로그 세그먼트 파일을 재활용합니다.PG_토토 캔디렉토리. 재시작 점은 체크 포인트 레코드에서만 수행 할 수 있기 때문에 마스터의 검문소보다 재시작소를 더 자주 수행 할 수 없습니다. 최소한 체크 포인트 레코드에 도달하면 다시 시작점이 트리거됩니다Checkpoint_Timeout마지막 재시작 포인트 이후로 지나가거나 월 크기가 초과 될 경우max_토토 캔_size. 그러나 다시 시작점을 수행 할 수있는 시점에 대한 제한이 있기 때문에max_토토 캔_size는 복구 중에 종종 최대 1 개의 체크 포인트 사이클의 토토 캔을 초과합니다. (max_토토 캔_size어쨌든 어려운 한계는 아니므로 디스크 공간이 떨어지지 않도록 항상 충분한 헤드 룸을 남겨 두어야합니다.)

일반적으로 사용되는 두 가지가 있습니다토토 캔기능 :xloginsertrecordxlogflush. xloginsertrecord|토토 캔공유 메모리의 버퍼. 새 기록을위한 공간이 없다면xloginsertrecord작성해야합니다 (커널 캐시로 이동).토토 캔버퍼. 이것은 바람직하지 않기 때문에xloginsertrecord는 영향을받는 데이터 페이지에서 독점 잠금을 유지할 때 모든 데이터베이스 저 레벨 수정 (예 : 행 삽입)에서 사용되므로 최대한 빨리 작동해야합니다. 더 나쁜 것은 글쓰기토토 캔버퍼는 또한 새로운 로그 세그먼트의 생성을 강요 할 수 있으며, 이는 더 많은 시간이 걸립니다. 보통,토토 캔버퍼는 AN에 의해 ​​작성되고 플러시되어야합니다xlogflush트랜잭션 커밋 시간에서 트랜잭션 레코드가 영구적 인 스토리지로 플러시되도록 요청하는 요청은 요청합니다. 로그 출력이 높은 시스템에서xlogflush요청이 자주 발생하지 않을 수 있습니다xloginsertrecord쓰기를해야합니다. 그러한 시스템에서는의 수를 늘려야합니다.토토 캔수정하여 버퍼토토 캔_buffers매개 변수. 언제full_page_writes설정되었고 시스템이 매우 바쁘고 설정토토 캔_buffersHigher는 각 체크 포인트 직후 기간 동안 응답 시간을 원활하게하는 데 도움이됩니다.

theCommit_Delay매개 변수는 그룹 커밋 리더 프로세스가 잠금을 획득 한 후 잠을자는 마이크로 초에 대해 정의합니다xlogflush, 그룹 커밋 추종자들은 리더 뒤에서 대기합니다. 이 지연을 통해 다른 서버 프로세스는 Commit Records를 토토 캔 버퍼에 추가하여 리더의 최종 동기화 작업에 의해 모두 플러시되도록합니다. 이면 수면이 발생하지 않습니다.fsync활성화되지 않았거나보다 적은 경우Commit_Siblings다른 세션은 현재 활성 거래 중입니다. 이것은 다른 세션이 곧 커밋 될 가능성이 낮은 경우 수면을 피합니다. 일부 플랫폼에서 수면 요청의 해상도는 10 밀리 초이므로 0이 아닌Commit_Delay1에서 10000 마이크로 초 사이의 설정은 동일한 효과를 갖습니다. 일부 플랫폼에서는 수면 작업이 매개 변수에서 요청한 것보다 약간 더 오래 걸릴 수 있습니다.

의 목적 이후Commit_Delay|는 거래 대기 시간을 희생시키면서 (잠재적으로 트랜잭션 대기 시간을 희생 시키면) 각 플러시 작업의 비용을 동시에 상각 할 수 있도록하기 위해서는 설정을 지능적으로 선택하기 전에 해당 비용을 정량화해야합니다. 비용이 높을수록 더 효과적입니다Commit_Delay는 거래 처리량을 증가시킬 것으로 예상됩니다. 그만큼PG_TEST_FSYNC프로그램을 사용하여 단일 토토 캔 플러시 작업이 취하는 마이크로 초의 평균 시간을 측정 할 수 있습니다. 단일 8KB 쓰기 작업 후에 프로그램이 플러시하는 데 걸리는 평균 시간의 절반의 값은 종종 가장 효과적인 설정입니다Commit_Delay,이 값은 특정 워크로드를 최적화 할 때 사용할 시작점으로 권장됩니다. 조정하는 동안Commit_Delay토토 캔 로그가 고도가 높은 회전 디스크에 저장 될 때 특히 유용하며, 솔리드 스테이트 드라이브 또는 배터리에 접근 된 쓰기 캐시가있는 RAID 어레이와 같은 매우 빠른 동기화 시간이있는 스토리지 미디어에서도 이점이 중요 할 수 있습니다. 그러나 이것은 분명히 대표적인 워크로드에 대해 테스트해야합니다. 더 높은 값Commit_Siblings그러한 경우에 사용해야하는 반면Commit_Siblings값은 종종 높은 대기 시간 매체에 도움이됩니다. 의 설정이 가능하다는 점에 유의하십시오.Commit_Delay너무 높아서 총 트랜잭션 처리량이 어려워 질 수 있습니다.

언제Commit_Delay|는 0으로 설정되어 있으며 (기본값), 그룹 커밋 형태가 여전히 발생할 수 있지만 각 그룹은 이전 플러시 작업 (있는 경우)이 발생하는 창에서 커밋 레코드를 플러시 해야하는 지점에 도달하는 세션만으로 구성됩니다. 더 높은 클라이언트에서는 A통로 효과발생하는 경향이 있으므로 그룹 커밋의 영향이 중요 해지도록Commit_Delay0이므로 명시 적으로 설정Commit_Delay덜 도움이되는 경향이 있습니다. 환경Commit_Delay(1) 동시에 거래가있는 경우에만 도움을 줄 수 있으며 (2) 처리량은 커밋 비율에 따라 어느 정도로 제한됩니다. 그러나 회전 대기 시간이 높으면이 설정은 두 명의 클라이언트 (즉, 한 형제 거래를 가진 단일 커밋 클라이언트)로 트랜잭션 처리량을 늘리는 데 효과적 일 수 있습니다..

the토토 캔_SYNC_METHOD매개 변수 결정 방법PostgreSQL커널에 강제를 요청합니다토토 캔디스크로 업데이트됩니다. 모든 옵션은 신뢰성 측면에서 동일해야합니다.fsync_writethrough, 다른 옵션이 그렇게하지 않더라도 디스크 캐시의 플러시를 강제 할 수 있습니다. 그러나 가장 빠른 플랫폼 특정입니다. 를 사용하여 다양한 옵션의 속도를 테스트 할 수 있습니다.PG_TEST_FSYNC프로그램. 이 매개 변수는이라면 관련이 없습니다.fsync꺼졌습니다.

활성화토토 캔_debug구성 매개 변수 (제공PostgreSQL지원을 통해 편집되었습니다.xloginsertrecordandxlogflush 토토 캔서버 로그에 로그인하는 통화. 이 옵션은 향후보다 일반적인 메커니즘으로 대체 될 수 있습니다.