몇 가지가 있습니다젠 토토데이터베이스 성능에 영향을 미치는 관련 구성 매개 변수. 이 섹션에서는 사용을 설명합니다. 찾다20 장서버 구성 매개 변수 설정에 대한 일반 정보.
체크 포인트는 힙 및 인덱스 데이터 파일이 해당 체크 포인트 앞에 작성된 모든 정보로 업데이트되었음을 보장하는 일련의 트랜잭션의 포인트입니다. 체크 포인트 시간에 모든 더러운 데이터 페이지는 디스크로 플러시되고 특수 체크 포인트 레코드는 젠 토토 파일에 기록됩니다. (변경 레코드는 이전에 <에 세척되었습니다.젠 토토files.) 충돌이 발생하면 충돌 복구 절차는 최신 체크 포인트 레코드를보고 젠 토토 (Redo Record)의 포인트를 결정하여 레디 작업을 시작해야합니다. 해당 지점 이전의 데이터 파일에 대한 변경 사항은 이미 디스크에 보장됩니다. 따라서, 체크 포인트 후, 레디 레코드를 포함하는 젠 토토 세그먼트는 더 이상 필요하지 않으며 재활용 또는 제거 할 수 있습니다. (언제젠 토토아카이빙이 완료되고 있으며, 젠 토토 세그먼트는 재활용되거나 제거되기 전에 보관해야합니다.)
모든 더러운 데이터 페이지를 디스크로 플러시하는 체크 포인트 요구 사항은 상당한 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, 체크 포인트 간격의 일부로 제공됩니다 (사용하여 구성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_SizeMegabytes of 젠 토토 파일과 하나의 추가 젠 토토 파일은 항상 보관됩니다. 또한 젠 토토 아카이빙을 사용하는 경우 이전 세그먼트를 보관할 때까지 제거하거나 재활용 할 수 없습니다. 젠 토토 아카이브가 젠 토토이 생성되는 속도를 따라 잡을 수 없거나 ifarchive_command
또는archive_library
반복적으로 실패하면, 오래된 왈 파일은PG_젠 토토
상황이 해결 될 때까지. 복제 슬롯을 사용하는 느리거나 실패한 대기 서버는 동일한 효과를 갖습니다 (참조섹션 27.2.6).
아카이브 복구 또는 대기 모드에서 서버가 정기적으로 수행됩니다RETARTPOINTS,정상 작동의 검문소와 유사한 : 서버는 모든 상태를 디스크로 강제하고 업데이트PG_CONTROL
파일은 이미 처리 된 젠 토토 데이터를 다시 스캔 할 필요가 없음을 나타내고의 이전 젠 토토 세그먼트 파일을 재활용합니다.PG_젠 토토
디렉토리. 재시작 점은 체크 포인트 레코드에서만 수행 할 수 있기 때문에 기본의 검문소보다 더 자주 재시작 할 수 없습니다. 최소한 체크 포인트 레코드에 도달하면 다시 시작점이 트리거됩니다Checkpoint_Timeout
마지막 재시작 지점 이후로 지나가거나 월 크기가 초과 될 경우max_젠 토토_size
. 그러나 다시 시작점을 수행 할 수있는 시점에 대한 제한이 있기 때문에max_젠 토토_size
는 복구 중에 종종 최대 1 개의 체크 포인트 사이클의 젠 토토을 초과합니다. (max_젠 토토_size
어쨌든 어려운 한계는 아니므로 디스크 공간이 떨어지지 않도록 항상 많은 헤드 룸을 남겨 두어야합니다.)
일반적으로 사용되는 두 가지가 있습니다젠 토토기능 :xloginsertrecord
andxlogflush
. xloginsertrecord
새 레코드를에 배치하는 데 사용됩니다.젠 토토공유 메모리의 버퍼. 새 기록을위한 공간이 없다면xloginsertrecord
작성해야합니다 (커널 캐시로 이동).젠 토토버퍼. 이것은 바람직하지 않기 때문에xloginsertrecord
는 영향을받는 데이터 페이지에서 독점 잠금을 유지할 때 모든 데이터베이스 저 레벨 수정 (예 : 행 삽입)에서 사용되므로 최대한 빨리 작동해야합니다. 더 나쁜 것은 글쓰기젠 토토버퍼는 또한 새로운 젠 토토 세그먼트의 생성을 강요 할 수 있으며, 이는 더 많은 시간이 걸립니다. 보통,젠 토토버퍼를 작성하고 플러시해야합니다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
는 거래 처리량을 증가시킬 것으로 예상됩니다. 그만큼PG_TEST_FSYNC프로그램을 사용하여 단일 젠 토토 플러시 작업이 취하는 마이크로 초의 평균 시간을 측정 할 수 있습니다. 단일 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
, 다른 옵션이 그렇게하지 않더라도 디스크 캐시의 플러시를 강제 할 수 있습니다. 그러나 가장 빠른 플랫폼 특정입니다. 를 사용하여 다양한 옵션의 속도를 테스트 할 수 있습니다.PG_TEST_FSYNC프로그램. 이 매개 변수는이라면 관련이 없습니다.fsync
꺼졌습니다.
활성화젠 토토_debug구성 매개 변수 (제공postgresql지원을 통해 편집되었습니다.xloginsertrecord
andxlogflush
젠 토토서버 로그에 로그인하는 통화. 이 옵션은 향후보다 일반적인 메커니즘으로 대체 될 수 있습니다.
젠 토토 데이터를 디스크에 작성하는 두 가지 내부 기능이 있습니다 :xlogwrite
andressue_xlog_fsync
. 언제track_젠 토토_io_timing활성화되어 총 시간의 총 금액xlogwrite
쓰기 및issure_xlog_fsync
동기화 젠 토토 데이터는 디스크에로 계산됩니다.젠 토토_write_time
and젠 토토_SYNC_TIME
inPG_STAT_젠 토토각각.xlogwrite
일반적으로xloginsertrecord
(젠 토토 버퍼에 새 레코드를위한 공간이 없을 때),xlogflush
및 젠 토토 WRITER, 젠 토토 버퍼를 디스크에 작성하고 호출하기issure_xlog_fsync
. issure_xlog_fsync
일반적으로xlogwrite
웨이프 파일을 디스크에 동기화합니다. 만약에젠 토토_sync_method
Open_Datasync
또는Open_Sync
, 쓰기 작업xlogwrite
서면 젠 토토 데이터를 디스크에 동기화하고issure_xlog_fsync
아무것도하지 않습니다. 만약에젠 토토_Sync_Method
isfdatasync
, fsync
또는fsync_writethrough
, 쓰기 작업은 월 버퍼를 커널 캐시로 이동하고issure_xlog_fsync
디스크와 동기화합니다. 설정에 관계없이track_젠 토토_io_timing
, 횟수xlogwrite
쓰기 및issure_xlog_fsync
디스크에 대한 젠 토토 데이터 동기화젠 토토_Write
and젠 토토_SYNC
inPG_STAT_젠 토토
각각.
the복구 _prefetch매개 변수를 사용하여 커널에 곧 필요하지만 현재없는 디스크 블록의 읽기를 시작하도록 지시함으로써 복구 중 I/O 대기 시간을 줄일 수 있습니다.PostgreSQL의 버퍼 풀. 그만큼Maintending_io_concurrency및젠 토토_DECODE_BUFFER_SIZE설정은 각각 조감도와 거리를 각각 제한합니다. 기본적으로로 설정됩니다.try
, 시스템의 기능을 가능하게하는posix_fadvise
사용 가능합니다.
문서에 올바른 것이 없다면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면