| 사설 토토 9.3.25 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.3 : 비동기 스포츠 토토 | 사설 토토 : 문서 : 9.3 : 신뢰성과 쓰기 로그 | 29장. 신뢰성 및 미리 쓰기 로그 | 스포츠 토토 : 문서 : 9.3 : Wal Internals | |
몇 가지가 있습니다사설 토토관련 데이터베이스 성능에 영향을 미치는 구성 매개변수입니다. 이 섹션에서는 사용법을 설명합니다. 문의제18장일반 정보는 다음과 같습니다. 서버 구성 매개변수를 설정합니다.
체크포인트순서의 지점입니다. 힙과 인덱스가 보장되는 트랜잭션 데이터 파일은 이전에 작성된 모든 정보로 업데이트되었습니다. 그 검문소. 체크포인트 시점에 모든 더티 데이터 페이지는 디스크에 플러시되고 특수 체크포인트 레코드가 디스크에 기록됩니다. 로그 파일. (변경 기록은 이전에 플러시되었습니다.사설 토토파일.) 다음과 같은 경우 충돌이 발생한 경우 충돌 복구 절차는 최신 체크포인트를 확인합니다. 로그의 지점을 결정하는 레코드(리두 레코드라고도 함) REDO 작업을 시작해야 합니다. 다음에 대한 모든 변경 사항 해당 시점 이전의 데이터 파일은 이미 디스크에 있다는 것이 보장됩니다. 따라서 체크포인트 이후에는 그 체크포인트 이전의 세그먼트를 기록합니다. 리두 레코드가 포함된 레코드는 더 이상 필요하지 않으며 재활용할 수 있습니다. 또는 제거되었습니다. (언제사설 토토보관 중 작업이 완료되면 로그 세그먼트를 보관하기 전에 보관해야 합니다. 재활용되거나 제거되었습니다.)
모든 더티 데이터 페이지를 플러시하는 체크포인트 요구 사항 디스크로 인해 상당한 I/O 로드가 발생할 수 있습니다. 그렇기 때문에 체크포인트는 체크포인트 시작 시 I/O가 시작되고 활동이 제한됩니다. 다음 체크포인트가 시작되기 전에 완료됩니다. 이 체크포인트 중 성능 저하를 최소화합니다.
서버의 체크포인터 프로세스는 자동으로 다음을 수행합니다. 체크포인트는 자주 옵니다. 체크포인트는 매마다 시작됩니다.checkpoint_segments로그 세그먼트 또는 모든checkpoint_timeout초 중 먼저 오는 것. 기본 설정은 3개 세그먼트입니다. 각각 300초(5분)입니다. 사설 토토이 없는 경우 이전 체크포인트 이후에 작성되면 새 체크포인트가 생성됩니다. 건너뛴 경우에도 마찬가지입니다.checkpoint_timeout있음 통과했다. (사설 토토 아카이빙을 사용 중이고 더 낮은 위치에 두려는 경우 잠재력을 제한하기 위해 파일을 보관하는 빈도에 대한 제한 데이터가 손실되면 조정해야 합니다.archive_timeout매개변수가 아닌 체크포인트 매개변수입니다.) 또한 SQL 명령을 사용하여 체크포인트를 강제 적용 가능체크포인트.
감소checkpoint_segments및/또는checkpoint_timeout체크포인트 원인 더 자주 발생합니다. 이를 통해 충돌 후 더 빠른 복구가 가능합니다. 다시 수행해야 할 작업이 줄어듭니다. 그러나 이 균형을 맞춰야 합니다. 더티 데이터 페이지를 더 자주 플러시하는 데 따른 비용 증가에 대비합니다. 만일full_page_writes이 기본값으로 설정되어 있으면 고려해야 할 또 다른 요소가 있습니다. 받는 사람 데이터 페이지 일관성 보장, 데이터 페이지의 첫 번째 수정 각 체크포인트 이후에는 전체 페이지 콘텐츠가 기록됩니다. 이 경우 체크포인트 간격이 짧을수록 볼륨이 증가합니다. 사설 토토 로그에 출력하여 사용 목표를 부분적으로 부정합니다. 더 짧은 간격으로 인해 어떤 경우든 더 많은 디스크 I/O가 발생합니다.
체크포인트는 상당히 비쌉니다. 첫째, 필요하기 때문입니다. 현재 더티 버퍼를 모두 작성하고 두 번째 이유는 위에서 설명한 대로 추가 후속 사설 토토 트래픽이 발생합니다. 그것은 그러므로 체크포인트 매개변수를 충분히 높게 설정하는 것이 현명합니다. 체크포인트는 너무 자주 발생하지 않습니다. 간단한 건강검진으로 체크포인트 매개변수에서 다음을 설정할 수 있습니다.체크포인트_경고매개변수. 체크포인트가 다음보다 더 가깝게 발생하는 경우체크포인트_경고초, 메시지가 출력됩니다 증가를 권장하는 서버 로그에checkpoint_segments. 가끔 저런 모습이 나오네요 메시지는 경보의 원인이 아니지만, 자주 나타나면 다음과 같습니다. 체크포인트 제어 매개변수를 늘려야 합니다. 대량 작업 대형과 같은복사이전으로 인해 다음이 발생할 수 있습니다. 설정하지 않은 경우 표시될 경고 수checkpoint_segments충분히 높습니다.
폭발적인 페이지 쓰기로 인해 I/O 시스템이 초과되는 것을 방지하려면, 체크포인트 중에 더티 버퍼를 쓰는 것은 일정 기간에 걸쳐 분산됩니다. 시간의. 해당 기간은 다음에 의해 제어됩니다.checkpoint_completion_target, 이는 체크포인트 간격의 일부로 제공됩니다. I/O 주어진 시간에 체크포인트가 완료되도록 속도가 조정됩니다. 의 일부checkpoint_segments사설 토토 체크포인트 시작 이후 세그먼트가 소비되었거나 지정된 의 일부checkpoint_timeout초 어느 쪽이든 더 빠른 쪽이 경과했습니다. 기본값은 0.5입니다.사설 토토다음으로 예상될 수 있습니다. 각 체크포인트를 다음 체크포인트보다 절반 정도의 시간 안에 완료하세요. 체크포인트가 시작됩니다. 최대 I/O에 매우 가까운 시스템에서 정상 작동 중 처리량을 늘리는 것이 좋습니다.checkpoint_completion_target줄이기 위해 체크포인트에서 I/O 로드. 이것의 단점은 체크포인트 연장은 복구 시간에 영향을 미칩니다. 왜냐하면 더 많은 사설 토토이 있기 때문입니다. 복구에 사용할 수 있도록 세그먼트를 유지해야 합니다. 그래도checkpoint_completion_target할 수 있다 1.0으로 높게 설정하면 그 이하로 유지하는 것이 가장 좋습니다. (최대 0.9 정도) 체크포인트에는 다른 항목이 포함되어 있으므로 더티 버퍼를 작성하는 것 이외의 활동. 1.0으로 설정하면 아주 좋습니다. 체크포인트가 제 시간에 완료되지 않을 가능성이 높습니다. 예상치 못한 변화로 인해 성능이 저하될 수 있습니다. 필요한 사설 토토 세그먼트 수입니다.
항상 최소한 하나의 사설 토토 세그먼트 파일이 있으며 일반적으로 (2 +보다 크지 않음)checkpoint_completion_target) * checkpoint_segments+ 1 또는checkpoint_segments + 사설 토토_keep_segments+ 1개 파일. 각 세그먼트 파일은 일반적으로 16MB입니다(이 크기는 서버 구축 시 변경될 수 있습니다.) 이를 사용하여 다음을 수행할 수 있습니다. 공간 요구 사항 예측사설 토토. 일반적으로 이전 로그 세그먼트 파일이 더 이상 필요하지 않으면 재활용됩니다(즉, 번호가 매겨진 순서대로 미래 세그먼트). 만약 단기적인 사유로 로그 출력 속도의 최고점, 3개 이상 *checkpoint_segments+ 1개의 세그먼트 파일, 필요하지 않음 세그먼트 파일은 시스템이 재활용될 때까지 재활용되지 않고 삭제됩니다. 이 한도 아래로 돌아갑니다.
아카이브 복구 또는 대기 모드에서는 서버가 주기적으로 수행한다다시 시작점, 유사함 정상 작동 시 체크포인트: 서버는 모든 상태를 강제로 적용합니다. 디스크에 업데이트합니다.pg_control파일을 이미 처리된 사설 토토 데이터를 스캔할 필요가 없음을 나타냅니다. 다시 한 번 수행한 다음에서 이전 로그 세그먼트 파일을 재활용합니다.pg_xlog디렉토리. 다시 시작 지점은 다음과 같습니다. 마스터의 체크포인트보다 더 자주 수행됩니다. 재시작점은 체크포인트 레코드에서만 수행될 수 있습니다. 에이 재시작 지점은 체크포인트 레코드에 도달할 때 트리거됩니다. 최소한checkpoint_timeout초가 있습니다 마지막 재시작 지점 이후 통과되었습니다. 대기 모드에서는 재시작 지점 적어도 다음과 같은 경우에도 트리거됩니다.checkpoint_segments로그 세그먼트가 재생되었습니다. 마지막 재시작 지점 이후.
일반적으로 내부에서 사용되는 두 가지가 있습니다.사설 토토기능:XLogInsert및XLogFlush. XLogInsert새 레코드를 다음에 배치하는 데 사용됩니다.사설 토토공유 메모리의 버퍼. 만약에
새 레코드를 위한 공간이 없습니다.XLogInsert작성해야 합니다(커널로 이동)
캐시) 몇 개 채워짐사설 토토버퍼.
이는 바람직하지 않습니다. 왜냐하면XLogInsert모든 데이터베이스 하위 수준에서 사용됩니다.
수정(예: 행 삽입)
영향을 받은 데이터 페이지에 배타적 잠금이 유지되므로 작업이
최대한 빨리 해야 합니다. 더 나쁜 것은 글쓰기입니다.사설 토토버퍼는 또한 강제로
새로운 로그 세그먼트를 생성하는데 더 많은 시간이 소요됩니다.
일반적으로,사설 토토버퍼는 다음과 같아야 합니다.
an에 의해 작성되고 플러시되었습니다.XLogFlush요청은 대부분 트랜잭션 커밋 시 이루어집니다.
거래 기록이 영구 기록되었는지 확인하는 데 걸리는 시간
저장. 로그 출력이 높은 시스템에서,XLogFlush요청이 자주 발생하지 않을 수 있음
방지하기 위해XLogInsert해야만 하는 것에서
글을 쓰세요. 그러한 시스템에서는 다음의 수를 늘려야 합니다.사설 토토수정하여 버퍼사설 토토_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_siblings22858_22907commit_siblings값은 다음과 같습니다 대기 시간이 긴 미디어에 도움이 되는 경우가 많습니다. 꽤 있으니 참고하세요 가능한 설정은commit_delay너무 높으면 트랜잭션 지연 시간이 너무 길어질 수 있습니다. 총 트랜잭션 처리량이 저하됩니다.
언제commit_delay0으로 설정됩니다( 기본값), 여전히 그룹 커밋 형태가 발생할 수 있습니다. 하지만 각 그룹은 해당 지점에 도달한 세션으로만 구성됩니다. 해당 기간 동안 커밋 레코드를 플러시해야 하는 경우 이전 플러시 작업(있는 경우)이 발생하고 있습니다. 더 높은 곳에 클라이언트 수 a"통로 효과"경향 발생하므로 그룹 커밋의 효과가 중요해집니다. 언제라도commit_delay은 0이므로 명시적으로 설정commit_delay경향이 있습니다 덜 도와주세요. 설정commit_delay만 가능 (1) 동시에 커밋되는 트랜잭션이 있을 때 도움이 됩니다. (2) 처리량은 커밋 속도에 따라 어느 정도 제한됩니다. 하지만 회전 대기 시간이 높은 경우 이 설정이 효과적일 수 있습니다. 2개의 클라이언트만으로 트랜잭션 처리량 증가(즉, 즉, 하나의 형제 트랜잭션이 있는 단일 커밋 클라이언트입니다.
그사설 토토_sync_method매개변수에 따라 방법이 결정됩니다.사설 토토커널에 강제로 요청합니다사설 토토디스크로 업데이트됩니다. 모든 옵션은 신뢰성 측면에서 동일해야 합니다. 예외fsync_writethrough, 이는 때로는 다른 옵션이 있는 경우에도 디스크 캐시를 강제로 플러시합니다. 그렇게 하지 마십시오. 그러나 어느 것이 플랫폼에 따라 다릅니다. 가장 빠르세요. 다음을 사용하여 다양한 옵션의 속도를 테스트할 수 있습니다.PostgreSQL : 문서프로그램. 참고하세요 다음과 같은 경우 매개변수가 관련이 없습니다.fsync이되었습니다 꺼졌어.
활성화 중사설 토토_debug구성 매개변수(제공된 경우)포스트그레SQL다음을 지원하도록 컴파일되었습니다.
it)은 각각의 결과를 낳을 것입니다.XLogInsert그리고XLogFlush 사설 토토호출이 서버 로그에 기록됩니다. 이
옵션은 보다 일반적인 메커니즘으로 대체될 수 있습니다.
미래.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 비동기 커밋 | 사설 토토 : 문서 : 9.3 : 신뢰성과 쓰기 로그 | 사설 토토 내부 |