| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 비동기 사설 토토 | 사설 토토 사이트 : 문서 : 9.6 : 신뢰성 및 쓰기 로그 | 30장. 신뢰성 및 미리 쓰기 로그 | 범퍼카 토토 PostgreSQL : 문서 : 9.6 : Wal Internals |
몇 가지가 있습니다스포츠 토토10767_10878제19장서버 구성 매개변수 설정에 대한 일반 정보입니다.
체크포인트은 힙 및 인덱스 데이터 파일이 해당 체크포인트 이전에 기록된 모든 정보로 업데이트되었음을 보장하는 트랜잭션 시퀀스의 지점입니다. 체크포인트 시간에 모든 더티 데이터 페이지는 디스크로 플러시되고 특수 체크포인트 레코드가 로그 파일에 기록됩니다. (변경 기록은 이전에 플러시되었습니다.스포츠 토토파일.) 충돌이 발생한 경우 충돌 복구 절차는 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, 이는 체크포인트 간격의 일부로 제공됩니다. 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_xlog디렉토리는 다음에 따라 다름min_스포츠 토토_size, max_스포츠 토토_size및 이전 체크포인트 주기에서 생성된 스포츠 토토의 양. 이전 로그 세그먼트 파일이 더 이상 필요하지 않으면 제거되거나 재활용됩니다(즉, 번호가 매겨진 순서에 따라 향후 세그먼트가 되도록 이름이 변경됩니다). 로그 출력 속도의 단기 최고치로 인해,max_스포츠 토토_size을 초과하면 시스템이 다시 이 제한 아래로 돌아올 때까지 불필요한 세그먼트 파일이 제거됩니다. 해당 한도 미만에서는 시스템이 다음 체크포인트까지 예상 요구량을 충족할 만큼 충분한 스포츠 토토 파일을 재활용하고 나머지는 제거합니다. 추정치는 이전 체크포인트 주기에 사용된 스포츠 토토 파일 수의 이동 평균을 기반으로 합니다. 실제 사용량이 추정치를 초과하면 이동 평균이 즉시 증가하므로 평균 사용량이 아닌 최대 사용량을 어느 정도 수용합니다.min_스포츠 토토_size향후 사용을 위해 재활용되는 스포츠 토토 파일의 양을 최소로 설정합니다. 시스템이 유휴 상태이고 스포츠 토토 사용량 추정에 따르면 스포츠 토토이 거의 필요하지 않은 경우에도 그만큼의 스포츠 토토은 나중에 사용하기 위해 항상 재활용됩니다.
독립적으로max_스포츠 토토_size, 스포츠 토토_keep_segments+ 1개의 최신 스포츠 토토 파일이 항상 보관됩니다. 또한 스포츠 토토 아카이브를 사용하는 경우 오래된 세그먼트는 아카이브될 때까지 제거하거나 재활용할 수 없습니다. 스포츠 토토 보관이 스포츠 토토 생성 속도를 따라갈 수 없는 경우 또는 다음과 같은 경우archive_command반복적으로 실패하면 이전 스포츠 토토 파일이 다음에 누적됩니다.pg_xlog상황이 해결될 때까지. 복제 슬롯을 사용하는 느리거나 실패한 대기 서버도 동일한 효과를 갖습니다(참조섹션 26.2.6).
아카이브 복구 또는 대기 모드에서 서버는 주기적으로 수행합니다다시 시작점, 이는 일반 작업의 체크포인트와 유사합니다. 서버는 모든 상태를 디스크에 강제로 적용하고,pg_control이미 처리된 스포츠 토토 데이터를 다시 스캔할 필요가 없음을 나타내는 파일을 지정한 다음 다음에서 이전 로그 세그먼트 파일을 재활용합니다.pg_xlog디렉토리. 재시작 지점은 체크포인트 레코드에서만 수행될 수 있으므로 재시작 지점은 마스터의 체크포인트보다 더 자주 수행될 수 없습니다. 최소한 체크포인트 레코드에 도달하면 다시 시작점이 트리거됩니다.checkpoint_timeout마지막 재시작 지점 이후 초가 지났거나 스포츠 토토 크기가 곧 초과될 경우max_스포츠 토토_size. 그러나 재시작 시점을 수행할 수 있는 시점에 대한 제한으로 인해,max_스포츠 토토_size복구 중에 최대 1개의 체크포인트 주기에 해당하는 스포츠 토토만큼 초과되는 경우가 많습니다. (max_스포츠 토토_size어쨌든 절대 엄격한 제한이 없으므로 디스크 공간 부족을 방지하기 위해 항상 충분한 여유 공간을 확보해야 합니다.)
내부적으로 일반적으로 사용되는 두 가지가 있습니다스포츠 토토기능: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트랜잭션 처리량이 어느 정도 증가할 것으로 예상됩니다.PostgreSQL : 문서프로그램을 사용하면 단일 스포츠 토토 플러시 작업에 소요되는 평균 시간을 마이크로초 단위로 측정할 수 있습니다. 프로그램이 단일 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, 이는 다른 옵션이 수행하지 않는 경우에도 디스크 캐시를 강제로 플러시할 수 있는 경우가 있습니다. 그러나 어느 것이 가장 빠른지는 플랫폼에 따라 다릅니다. 다음을 사용하여 다양한 옵션의 속도를 테스트할 수 있습니다.PostgreSQL : 문서프로그램. 다음과 같은 경우에는 이 매개변수가 관련이 없습니다.fsync꺼졌습니다.
활성화 중스포츠 토토_debug구성 매개변수(제공된 경우)PostgreSQL이를 지원하도록 컴파일되었습니다) 각각의 결과는 다음과 같습니다.XLogInsertRecord그리고XLogFlush 스포츠 토토호출이 서버 로그에 기록됩니다. 이 옵션은 향후 보다 일반적인 메커니즘으로 대체될 수 있습니다.