몇 가지가 있습니다범퍼카 토토10884_1099519장서버 구성 매개변수 설정에 대한 일반 정보입니다.
체크포인트은 힙 및 인덱스 데이터 파일이 해당 체크포인트 이전에 기록된 모든 정보로 업데이트되었음을 보장하는 트랜잭션 시퀀스의 지점입니다. 체크포인트 시점에는 모든 더티 데이터 페이지가 디스크로 플러시되고 특수 체크포인트 레코드가 범퍼카 토토 파일에 기록됩니다. (변경 기록은 이전에 플러시되었습니다.범퍼카 토토파일.) 충돌이 발생한 경우 충돌 복구 절차는 최신 체크포인트 레코드를 확인하여 REDO 작업을 시작해야 하는 범퍼카 토토(리두 레코드라고도 함) 지점을 결정합니다. 해당 시점 이전에 데이터 파일에 대한 모든 변경 사항은 이미 디스크에 있는 것으로 보장됩니다. 따라서 체크포인트 이후에는 리두 레코드를 포함하는 범퍼카 토토 세그먼트 앞에 있는 범퍼카 토토 세그먼트가 더 이상 필요하지 않으며 재활용되거나 제거될 수 있습니다. (언제범퍼카 토토보관이 완료되는 중입니다. 범퍼카 토토 세그먼트는 재활용되거나 제거되기 전에 보관되어야 합니다.)
모든 더티 데이터 페이지를 디스크로 플러시해야 하는 체크포인트 요구 사항은 상당한 I/O 로드를 유발할 수 있습니다. 이러한 이유로 체크포인트 활동은 I/O가 체크포인트 시작 시 시작되어 다음 체크포인트가 시작되기 전에 완료되도록 조절됩니다. 이는 체크포인트 중 성능 저하를 최소화합니다.
서버의 체크포인트 프로세스는 자주 자동으로 체크포인트를 수행합니다. 체크포인트는 매마다 시작됩니다.checkpoint_timeout초 또는 ifmax_범퍼카 토토_size둘 중 먼저 도달하는 쪽이 곧 초과됩니다. 기본 설정은 각각 5분과 1GB입니다. 이전 체크포인트 이후 범퍼카 토토이 작성되지 않은 경우 다음과 같은 경우에도 새 체크포인트를 건너뜁니다.checkpoint_timeout지나갔습니다. (범퍼카 토토 보관을 사용 중이고 잠재적인 데이터 손실을 제한하기 위해 파일 보관 빈도를 더 낮게 제한하려는 경우 다음을 조정해야 합니다.archive_timeout체크포인트 매개변수가 아닌 매개변수입니다.) SQL 명령을 사용하여 체크포인트를 강제로 적용하는 것도 가능합니다.체크포인트.
감소checkpoint_timeout및/또는max_범퍼카 토토_size체크포인트가 더 자주 발생하게 합니다. 이렇게 하면 다시 수행해야 하는 작업이 줄어들기 때문에 충돌 후 더 빠르게 복구할 수 있습니다. 그러나 더티 데이터 페이지를 더 자주 플러시하는 데 따른 비용 증가와 균형을 맞춰야 합니다. 만약에full_page_writes이(기본값) 설정되어 있으면 고려해야 할 또 다른 요소가 있습니다. 데이터 페이지 일관성을 보장하기 위해 각 체크포인트 이후 데이터 페이지를 처음 수정하면 전체 페이지 콘텐츠가 기록됩니다. 이 경우 체크포인트 간격이 작을수록 범퍼카 토토에 대한 출력 볼륨이 증가하여 더 작은 간격을 사용하려는 목표가 부분적으로 무효화되고 어떤 경우에도 더 많은 디스크 I/O가 발생합니다.
체크포인트는 상당히 비쌉니다. 첫째, 현재 더티 버퍼를 모두 작성해야 하기 때문이고, 둘째, 위에서 설명한 대로 추가 후속 범퍼카 토토 트래픽이 발생하기 때문입니다. 그러므로 체크포인트가 너무 자주 발생하지 않도록 체크포인트 매개변수를 충분히 높게 설정하는 것이 좋습니다. 체크포인트 매개변수에 대한 간단한 온전성 검사로 다음을 설정할 수 있습니다.체크포인트_경고매개변수. 체크포인트가 다음보다 더 가깝게 발생하는 경우체크포인트_경고초, 증가를 권장하는 메시지가 서버 로그에 출력됩니다.max_범퍼카 토토_size. 이러한 메시지가 가끔 나타나는 것은 경보의 원인이 아니지만, 자주 나타나는 경우 체크포인트 제어 매개변수를 늘려야 합니다. 대규모 작업과 같은 대량 작업복사설정하지 않은 경우 전송으로 인해 여러 가지 경고가 나타날 수 있습니다.max_범퍼카 토토_size충분히 높습니다.
폭발적인 페이지 쓰기로 인해 I/O 시스템이 초과되는 것을 방지하기 위해 체크포인트 중 더티 버퍼 쓰기는 일정 기간에 걸쳐 분산됩니다. 해당 기간은 다음에 의해 제어됩니다.checkpoint_completion_target, 이는 체크포인트 간격의 일부로 제공됩니다(다음을 사용하여 구성됨)checkpoint_timeout). I/O 속도는 지정된 비율이 될 때 체크포인트가 완료되도록 조정됩니다.checkpoint_timeout초가 경과했거나 그 이전max_범퍼카 토토_size중 빠른 쪽이 초과됩니다. 기본값은 0.9입니다.PostgreSQL다음 예정된 체크포인트보다 조금 전에 각 체크포인트를 완료할 것으로 예상할 수 있습니다(마지막 체크포인트 기간의 약 90%). 이는 체크포인트 I/O 로드가 체크포인트 간격 전체에 걸쳐 일관되도록 I/O를 최대한 분산시킵니다. 단점은 체크포인트를 연장하면 복구 시간에 영향을 미친다는 것입니다. 복구에 사용할 수 있으려면 더 많은 범퍼카 토토 세그먼트를 유지해야 하기 때문입니다. 복구에 필요한 시간을 걱정하는 사용자는 복구 시간을 줄이는 것이 좋습니다.checkpoint_timeout그래서 체크포인트는 더 자주 발생하지만 여전히 체크포인트 간격에 걸쳐 I/O를 분산시킵니다. 또는,checkpoint_completion_target줄일 수 있지만 이로 인해 I/O가 더 많이 발생하고(체크포인트 중) 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_size메가바이트의 범퍼카 토토 파일과 하나의 추가 범퍼카 토토 파일이 항상 보관됩니다. 또한 범퍼카 토토 아카이브를 사용하는 경우 오래된 세그먼트는 아카이브될 때까지 제거하거나 재활용할 수 없습니다. 범퍼카 토토 보관이 범퍼카 토토 생성 속도를 따라갈 수 없는 경우 또는 다음과 같은 경우archive_command또는archive_library반복적으로 실패하면 이전 범퍼카 토토 파일이 다음에 누적됩니다.pg_범퍼카 토토상황이 해결될 때까지. 복제 슬롯을 사용하는 느리거나 실패한 대기 서버도 동일한 효과를 갖습니다(참조섹션 26.2.6). 마찬가지로 만약범퍼카 토토 요약이 활성화되면 이전 세그먼트가 요약될 때까지 유지됩니다.
아카이브 복구 또는 대기 모드에서 서버는 주기적으로 수행합니다다시 시작점,정상 작동의 체크포인트와 유사합니다. 서버는 모든 상태를 디스크에 강제로 적용하고 업데이트합니다.pg_control이미 처리된 범퍼카 토토 데이터를 다시 스캔할 필요가 없음을 나타내는 파일을 지정한 다음 다음에서 이전 범퍼카 토토 세그먼트 파일을 재활용합니다.pg_범퍼카 토토디렉토리. 다시 시작 지점은 체크포인트 레코드에서만 수행될 수 있으므로 기본 데이터베이스의 체크포인트보다 더 자주 다시 시작 지점을 수행할 수 없습니다. 일정이나 외부 요청에 따라 재시작 지점이 필요할 수 있습니다. 그만큼restartpoints_timed카운터pg_stat_checkpointerview는 첫 번째 항목을 계산하는 동안restartpoints_req두번째. 최소한 체크포인트 기록에 도달하면 일정에 따라 재시작 지점이 트리거됩니다.checkpoint_timeout마지막으로 재시작 지점을 수행한 이후 초가 지났거나 재시작 지점을 수행하려는 이전 시도가 실패한 경우. 마지막 경우에는 다음 재시작 시점이 15초로 예약됩니다. 체크포인트와 유사한 이유로 인해 요청에 의해 재시작 포인트가 트리거되지만 대부분 범퍼카 토토 크기가 초과될 경우max_범퍼카 토토_size그러나 재시작 시점을 수행할 수 있는 시기에 대한 제한으로 인해,max_범퍼카 토토_size복구 중에 최대 1개의 체크포인트 주기에 해당하는 범퍼카 토토만큼 초과되는 경우가 많습니다. (max_범퍼카 토토_size어쨌든 절대 엄격한 제한이 없으므로 디스크 공간 부족을 방지하기 위해 항상 충분한 여유 공간을 남겨 두어야 합니다.)restartpoints_done카운터pg_stat_checkpointerview는 실제로 수행된 재시작 지점을 계산합니다.
어떤 경우에는 대규모 작업 중과 같이 기본의 범퍼카 토토 크기가 빠르게 증가할 때삽입, 그restartpoints_req23086_23457restartpoints_done23506_23612
일반적으로 내부에서 사용되는 두 가지가 있습니다범퍼카 토토기능:XLogInsertRecord그리고XLogFlush. XLogInsertRecord새 레코드를 다음에 배치하는 데 사용됩니다.범퍼카 토토공유 메모리의 버퍼. 새 레코드를 위한 공간이 없는 경우,XLogInsertRecord채워진 몇 개를 작성해야 합니다(커널 캐시로 이동).범퍼카 토토버퍼. 이는 바람직하지 않습니다. 왜냐하면XLogInsertRecord는 영향을 받는 데이터 페이지에 배타적 잠금이 유지될 때 모든 데이터베이스 하위 수준 수정(예: 행 삽입)에 사용되므로 작업이 최대한 빨라야 합니다. 더 나쁜 것은 글쓰기입니다.범퍼카 토토버퍼는 새로운 범퍼카 토토 세그먼트를 강제로 생성할 수도 있으며, 이는 훨씬 더 많은 시간이 소요됩니다. 보통,범퍼카 토토버퍼는 다음에 의해 작성되고 플러시되어야 합니다.XLogFlush대부분의 경우 트랜잭션 커밋 시 트랜잭션 레코드가 영구 저장소로 플러시되도록 하는 요청입니다. 범퍼카 토토 출력이 높은 시스템에서,XLogFlush요청이 방지할 만큼 자주 발생하지 않을 수 있습니다.XLogInsertRecord쓰기를 해야 해서요. 그러한 시스템에서는 다음의 수를 늘려야 합니다.범퍼카 토토수정하여 버퍼범퍼카 토토_buffers매개변수. 언제full_page_writes설정되었으며 시스템 사용량이 매우 많습니다. 설정범퍼카 토토_buffers더 높으면 각 체크포인트 직후 기간 동안 원활한 응답 시간을 제공하는 데 도움이 됩니다.
그commit_delay매개변수는 그룹 커밋 리더 프로세스가 잠금을 획득한 후 절전 모드로 전환되는 시간(마이크로초)을 정의합니다.XLogFlush, 그룹 커밋 추종자가 리더 뒤에 줄을 서 있는 동안. 이러한 지연으로 인해 다른 서버 프로세스는 커밋 레코드를 범퍼카 토토 버퍼에 추가하여 모든 커밋 레코드가 리더의 최종 동기화 작업에 의해 플러시될 수 있습니다. 다음과 같은 경우 잠이 오지 않습니다.fsync활성화되지 않았거나 다음보다 적은 경우commit_siblings다른 세션이 현재 활성 트랜잭션에 있습니다. 이렇게 하면 다른 세션이 곧 커밋될 가능성이 없을 때 절전 모드가 방지됩니다. 일부 플랫폼에서는 절전 요청 해결 시간이 10밀리초이므로 0이 아닌 값은 모두 해당됩니다.commit_delay1~10000마이크로초 사이로 설정하면 동일한 효과가 있습니다. 또한 일부 플랫폼에서는 절전 작업이 매개변수에서 요청한 것보다 약간 더 오래 걸릴 수 있습니다.
목적 이후로commit_delay동시에 커밋되는 트랜잭션에서 각 플러시 작업의 비용을 분할할 수 있도록 하기 위해(잠재적으로 트랜잭션 대기 시간을 희생하여) 설정을 지능적으로 선택하기 전에 해당 비용을 정량화해야 합니다. 비용이 높을수록 효과적입니다.commit_delay트랜잭션 처리량이 어느 정도 증가할 것으로 예상됩니다. 그만큼pg_test_fsync프로그램을 사용하면 단일 범퍼카 토토 플러시 작업에 소요되는 평균 시간을 마이크로초 단위로 측정할 수 있습니다. 프로그램이 단일 8kB 쓰기 작업 후 플러시하는 데 걸리는 평균 시간의 절반 값이 가장 효과적인 설정인 경우가 많습니다.commit_delay이므로 이 값은 특정 워크로드를 최적화할 때 사용하는 시작점으로 권장됩니다. 튜닝하는 동안commit_delay범퍼카 토토이 대기 시간이 긴 회전 디스크에 저장될 때 특히 유용합니다. SSD 또는 배터리 지원 쓰기 캐시가 있는 RAID 어레이와 같이 동기화 시간이 매우 빠른 저장 미디어에서도 이점이 상당할 수 있습니다. 그러나 이는 대표적인 작업 부하에 대해 확실히 테스트되어야 합니다. 더 높은 값commit_siblings이런 경우에는 사용해야 하지만 더 작습니다commit_siblings값은 대기 시간이 긴 미디어에 도움이 되는 경우가 많습니다. 다음과 같은 설정이 가능하다는 점에 유의하세요.commit_delay너무 높으면 트랜잭션 지연 시간이 너무 길어져서 총 트랜잭션 처리량이 저하될 수 있습니다.
언제commit_delay이 0(기본값)으로 설정되어 있어도 여전히 그룹 커밋 형태가 발생할 수 있지만 각 그룹은 이전 플러시 작업(있는 경우)이 발생하는 기간 동안 커밋 레코드를 플러시해야 하는 지점에 도달하는 세션으로만 구성됩니다. 클라이언트 수가 많을 경우 a“통로 효과”발생하는 경향이 있으므로 그룹 커밋의 효과는 다음과 같은 경우에도 중요해집니다.commit_delay는 0이므로 명시적으로 설정됩니다.commit_delay덜 도움이 되는 경향이 있습니다. 환경commit_delay(1) 동시에 커밋하는 트랜잭션이 있고 (2) 처리량이 커밋 속도에 따라 어느 정도 제한되는 경우에만 도움이 될 수 있습니다. 그러나 회전 대기 시간이 긴 경우 이 설정은 2개의 클라이언트(즉, 하나의 형제 트랜잭션이 있는 단일 커밋 클라이언트)로 트랜잭션 처리량을 늘리는 데 효과적일 수 있습니다.
그범퍼카 토토_sync_method매개변수에 따라 방법이 결정됩니다.PostgreSQL커널에 강제로 요청합니다범퍼카 토토디스크로 업데이트됩니다. 다음을 제외하고 모든 옵션은 신뢰성 측면에서 동일해야 합니다.fsync_writethrough, 이는 다른 옵션이 수행하지 않는 경우에도 디스크 캐시를 강제로 플러시할 수 있는 경우가 있습니다. 그러나 어느 것이 가장 빠른지는 플랫폼에 따라 다릅니다. 다음을 사용하여 다양한 옵션의 속도를 테스트할 수 있습니다.pg_test_fsync프로그램. 다음과 같은 경우에는 이 매개변수가 관련이 없습니다.fsync꺼졌습니다.
활성화 중범퍼카 토토_debug구성 매개변수(제공된 경우)포스트그레SQL이를 지원하도록 컴파일되었습니다) 각각의 결과는 다음과 같습니다.XLogInsertRecord그리고XLogFlush 범퍼카 토토호출이 서버 로그에 기록됩니다. 이 옵션은 향후 보다 일반적인 메커니즘으로 대체될 수 있습니다.
범퍼카 토토 데이터를 디스크에 쓰는 두 가지 내부 함수가 있습니다:XLogWrite그리고issue_xlog_fsync. 언제track_범퍼카 토토_io_timing활성화되어 총 시간XLogWrite작성하고issue_xlog_fsync범퍼카 토토 데이터를 디스크에 동기화하는 것은 다음과 같이 계산됩니다.write_time그리고fsync_time에pg_stat_io에 대한객체 월각각.XLogWrite일반적으로 다음 사람이 호출합니다.XLogInsertRecord(범퍼카 토토 버퍼에 새 레코드를 위한 공간이 없는 경우),XLogFlush및 범퍼카 토토 작성자, 디스크에 범퍼카 토토 버퍼를 쓰고 호출issue_xlog_fsync. issue_xlog_fsync보통 다음으로 호출됩니다.XLogWrite범퍼카 토토 파일을 디스크에 동기화합니다. 만약에범퍼카 토토_sync_method둘 중 하나입니다open_datasync또는open_sync, 쓰기 작업XLogWrite기록된 범퍼카 토토 데이터를 디스크에 동기화하도록 보장하고issue_xlog_fsync아무것도 하지 않습니다. 만약에범퍼카 토토_sync_method둘 중 하나입니다fdatasync, fsync또는fsync_writethrough, 쓰기 작업은 범퍼카 토토 버퍼를 커널 캐시로 이동하고issue_xlog_fsync디스크에 동기화합니다. 설정에 관계없이track_범퍼카 토토_io_timing, 횟수XLogWrite작성하고issue_xlog_fsync범퍼카 토토 데이터를 디스크에 동기화하는 것도 다음으로 계산됩니다.쓴다그리고fsyncsinpg_stat_io에 대한객체 월각각.
그recovery_prefetch매개변수는 곧 필요하지만 현재는 존재하지 않는 디스크 블록의 읽기를 시작하도록 커널에 지시하여 복구 중 I/O 대기 시간을 줄이는 데 사용할 수 있습니다.PostgreSQL의 버퍼 풀입니다. 그만큼maintenance_io_concurrency그리고범퍼카 토토_decode_buffer_size설정은 프리패치 동시성과 거리를 각각 제한합니다. 기본적으로는로 설정되어 있습니다.시도해 보세요, 미리 읽기 조언 발행을 지원하는 시스템에서 기능을 활성화합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.