2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 토토 베이 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.스포츠 토토 사이트 PostgreSQL : 문서 : 17 : 19.5. 미리 로그 작성버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

18.5. 미리 쓰기 토토 베이

이 설정 조정에 대한 추가 정보는 다음을 참조하세요.PostgreSQL : 문서 : 9.4 : 무지개 토토 구성.

18.5.1. 설정

wal_level (열거형)

wal_levelWAL에 기록되는 정보의 양을 결정합니다. 기본값은최소, 충돌 또는 즉각적인 종료로부터 복구하는 데 필요한 정보만 작성합니다.아카이브WAL 보관에 필요한 로깅을 추가합니다.hot_standby대기 서버에서 읽기 전용 쿼리를 실행하는 데 필요한 정보를 추가합니다. 그리고 마지막으로논리적논리적 디코딩을 지원하는 데 필요한 정보를 추가합니다. 각 수준에는 모든 하위 수준에서 기록된 정보가 포함됩니다. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.

최소레벨에서는 일부 대량 작업의 WAL 로깅을 안전하게 건너뛸 수 있으므로 해당 작업이 훨씬 빨라질 수 있습니다(참조섹션 14.4.7). 이 최적화를 적용할 수 있는 작업은 다음과 같습니다.

다음으로 테이블 생성
색인 생성
클러스터
복사동일한 트랜잭션에서 생성되거나 잘린 테이블로
그러나 최소 WAL에는 기본 백업 및 WAL 로그에서 데이터를 재구성하기에 충분한 정보가 포함되어 있지 않으므로아카이브11583_11634archive_mode) 및 스트리밍 복제.

hot_standby레벨, 와 동일한 정보가 기록됩니다.아카이브및 WAL에서 실행 중인 트랜잭션 상태를 재구성하는 데 필요한 정보입니다. 대기 서버에서 읽기 전용 쿼리를 활성화하려면,wal_level다음으로 설정되어야 함hot_standby또는 기본에서 그 이상, 그리고hot_standby대기 모드에서 활성화되어야 합니다. 사용하는 것 사이에 측정 가능한 성능 차이가 거의 없다고 생각됩니다.hot_standby그리고아카이브레벨이므로 프로덕션에 눈에 띄는 영향이 있다면 피드백을 환영합니다.

논리적레벨, 와 동일한 정보가 기록됩니다.hot_standby및 WAL에서 논리적 변경 세트를 추출하는 데 필요한 정보. 수준을 사용하여논리적특히 많은 테이블이 구성된 경우 WAL 볼륨이 증가합니다.복제본 ID 전체그리고 다수업데이트그리고삭제문이 실행됩니다.

fsync (부울)

이 매개변수가 켜져 있으면포스트그레SQL서버는 다음을 실행하여 업데이트가 물리적으로 디스크에 기록되도록 시도합니다.fsync()시스템 호출 또는 다양한 동등한 방법(참조wal_sync_method). 이렇게 하면 운영 체제 또는 하드웨어 충돌 후 데이터베이스 클러스터가 일관된 상태로 복구될 수 있습니다.

끄는 동안fsync종종 성능상의 이점을 제공하므로 정전이나 시스템 충돌 시 복구할 수 없는 데이터 손상이 발생할 수 있습니다. 따라서 끄는 것이 좋습니다.fsync외부 데이터에서 전체 데이터베이스를 쉽게 다시 만들 수 있다면.

전원을 꺼도 안전한 상황의 예fsync백업 파일에서 새 데이터베이스 클러스터의 초기 로드를 포함합니다. 데이터 배치를 처리한 후 데이터베이스를 버리고 다시 생성하거나, 자주 다시 생성되고 장애 조치에 사용되지 않는 읽기 전용 데이터베이스 복제를 위해 데이터베이스 클러스터를 사용합니다. 고품질 하드웨어만으로는 전원을 끌 충분한 근거가 되지 않습니다.fsync.

변경 시 안정적인 복구를 위해fsyncoff에서 on으로 전환하려면 커널의 모든 수정된 버퍼를 내구성 있는 저장소로 강제 설정해야 합니다. 이는 클러스터가 종료되거나 fsync가 켜져 있는 동안 다음을 실행하여 수행할 수 있습니다.initdb --sync-only, 실행 중동기화, 파일 시스템 마운트 해제 또는 서버 재부팅.

많은 상황에서 꺼짐동기_커밋중요하지 않은 트랜잭션의 경우 끄면 성능상의 많은 이점을 얻을 수 있습니다.fsync, 데이터 손상 위험 없이.

fsync다음에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서. 이 매개변수를 끄는 경우 끄는 것도 고려해 보세요.full_page_writes.

동기_커밋 (열거형)

명령이 a를 반환하기 전에 트랜잭션 커밋이 WAL 레코드가 디스크에 기록될 때까지 기다릴지 여부를 지정합니다."성공"클라이언트에 표시됩니다. 유효한 값은 다음과 같습니다.켜짐, remote_write, 현지꺼짐. 기본적이고 안전한 설정은 다음과 같습니다.켜짐. 언제꺼짐, 클라이언트에 성공이 보고되는 시점과 서버 충돌로부터 트랜잭션이 실제로 안전하다고 보장되는 시점 사이에 지연이 있을 수 있습니다. (최대 지연 시간은 3회입니다.wal_writer_delay.) 달리fsync, 이 매개변수를로 설정꺼짐데이터베이스 불일치 위험이 발생하지 않습니다. 운영 체제 또는 데이터베이스 충돌로 인해 최근에 커밋된 일부 트랜잭션이 손실될 수 있지만 데이터베이스 상태는 해당 트랜잭션이 완전히 중단된 것처럼 동일합니다. 그래서 돌아서서동기_커밋off는 트랜잭션 내구성에 대한 정확한 확실성보다 성능이 더 중요한 경우 유용한 대안이 될 수 있습니다. 자세한 내용은 참조PostgreSQL : 문서 : 9.4 : 비동기 스포츠 토토 결과.

만약synchronous_standby_names가 설정되면 이 매개변수는 트랜잭션 커밋이 트랜잭션의 WAL 레코드가 대기 서버에 복제될 때까지 기다릴지 여부도 제어합니다. 으로 설정된 경우켜짐, 커밋은 현재 동기 대기의 응답이 트랜잭션의 커밋 레코드를 수신하여 디스크에 플러시했음을 나타낼 때까지 기다립니다. 이렇게 하면 기본 및 대기 모두 데이터베이스 저장소가 손상되지 않는 한 트랜잭션이 손실되지 않습니다. 으로 설정된 경우remote_write, 커밋은 현재 동기 대기의 응답이 트랜잭션의 커밋 레코드를 수신하여 대기의 운영 체제에 기록했음을 나타낼 때까지 대기하지만 데이터가 반드시 대기의 안정적인 저장소에 도달한 것은 아닙니다. 이 설정은 대기 인스턴스가 존재하더라도 데이터 보존을 보장하기에 충분합니다.토토 베이충돌이 발생했지만 대기 시스템에서 운영 체제 수준의 충돌이 발생한 경우에는 발생하지 않았습니다.

동기식 복제가 사용 중일 때 일반적으로 로컬 디스크 플러시와 WAL 레코드 복제를 기다리거나 트랜잭션이 비동기식으로 커밋되도록 허용하는 것이 합리적입니다. 그러나 설정현지은 동기식 복제가 아닌 디스크에 대한 로컬 플러시를 기다리려는 트랜잭션에 사용할 수 있습니다. 만일synchronous_standby_names설정되지 않았습니다. 설정입니다켜짐, remote_write그리고현지모두 동일한 동기화 수준을 제공합니다. 트랜잭션 커밋은 로컬이 디스크에 플러시될 때까지만 기다립니다.

이 매개변수는 언제든지 변경될 수 있습니다. 하나의 트랜잭션에 대한 동작은 커밋할 때 적용되는 설정에 따라 결정됩니다. 따라서 일부 트랜잭션은 동기식으로 커밋하고 다른 트랜잭션은 비동기식으로 커밋하는 것이 가능하고 유용합니다. 예를 들어, 기본값이 반대일 때 단일 다중 문 트랜잭션 커밋을 비동기식으로 만들려면 issue로컬 동기_커밋을 끄기로 설정거래 내에서.

wal_sync_method (열거형)

WAL 업데이트를 디스크에 강제로 적용하는 데 사용되는 방법입니다. 만일fsync이 꺼져 있으면 WAL 파일 업데이트가 전혀 강제로 실행되지 않으므로 이 설정은 관련이 없습니다. 가능한 값은 다음과 같습니다:

  • open_datasync(WAL 파일 쓰기열기()옵션O_DSYNC)

  • fdatasync(전화fdatasync()각 커밋에서)

  • fsync(전화fsync()각 커밋에서)

  • fsync_writethrough(전화fsync()커밋할 때마다 디스크 쓰기 캐시를 강제로 기록)

  • open_sync(WAL 파일 쓰기열기()옵션O_SYNC)

open_* 옵션도 사용됨O_DIRECT사용 가능한 경우. 모든 플랫폼에서 이러한 선택 사항을 모두 사용할 수 있는 것은 아닙니다. 기본값은 플랫폼에서 지원하는 위 목록의 첫 번째 메서드입니다. 단, 다음과 같습니다.fdatasyncLinux의 기본값입니다. 기본값이 반드시 이상적인 것은 아닙니다. 충돌로부터 안전한 구성을 만들거나 최적의 성능을 얻으려면 이 설정이나 시스템 구성의 다른 측면을 변경해야 할 수도 있습니다. 이러한 측면은 다음에서 논의됩니다.PostgreSQL : 문서 : 9.4 : 토토 베이성. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.

full_page_writes (부울)

이 매개변수가 켜져 있으면,토토 베이서버는 체크포인트 이후 해당 페이지를 처음 수정하는 동안 각 디스크 페이지의 전체 콘텐츠를 WAL에 기록합니다. 이는 운영 체제 충돌 중에 진행 중인 페이지 쓰기가 부분적으로만 완료되어 이전 데이터와 새 데이터가 혼합되어 있는 온디스크 페이지로 이어질 수 있기 때문에 필요합니다. 일반적으로 WAL에 저장되는 행 수준 변경 데이터는 충돌 후 복구 중에 해당 페이지를 완전히 복원하는 데 충분하지 않습니다. 전체 페이지 이미지를 저장하면 페이지가 올바르게 복원될 수 있지만 WAL에 기록해야 하는 데이터 양이 늘어나는 대가를 치르게 됩니다. (WAL 재생은 항상 체크포인트에서 시작되므로 체크포인트 이후 각 페이지의 첫 번째 변경 중에 이 작업을 수행하는 것으로 충분합니다. 따라서 전체 페이지 쓰기 비용을 줄이는 한 가지 방법은 체크포인트 간격 매개변수를 늘리는 것입니다.)

이 매개변수를 끄면 일반 작동 속도가 빨라지지만 시스템 오류 후 복구할 수 없는 데이터 손상이나 자동 데이터 손상이 발생할 수 있습니다. 위험은 전원을 끄는 것과 유사합니다.fsync, 크기는 작지만 해당 매개변수에 권장되는 것과 동일한 상황에 따라서만 꺼야 합니다.

이 매개변수를 꺼도 특정 시점 복구(PITR)를 위한 WAL 아카이브 사용에 영향을 미치지 않습니다(참조토토 꽁 머니 PostgreSQL : 문서 : 9.4 : 연속 보관 및 시점 복구 (PITR)).

이 매개변수는 다음에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서. 기본값은켜짐.

wal_log_hints (부울)

이 매개변수가 다음과 같은 경우켜짐, 그토토 베이서버는 체크포인트 이후 해당 페이지의 첫 번째 수정 중에 각 디스크 페이지의 전체 콘텐츠를 WAL에 기록합니다. 소위 힌트 비트의 중요하지 않은 수정의 경우에도 마찬가지입니다.

데이터 체크섬이 활성화되면 힌트 비트 업데이트는 항상 WAL에 기록되며 이 설정은 무시됩니다. 이 설정을 사용하면 데이터베이스에 데이터 체크섬이 활성화된 경우 추가 WAL 로깅이 얼마나 발생하는지 테스트할 수 있습니다.

이 매개변수는 서버 시작시에만 설정될 수 있습니다. 기본값은꺼짐.

wal_buffers (정수)

아직 디스크에 기록되지 않은 WAL 데이터에 사용되는 공유 메모리의 양. -1의 기본 설정은 1/32(약 3%)에 해당하는 크기를 선택합니다.shared_buffers, 그러나 그 이상64kB일반적으로 하나의 WAL 세그먼트 크기를 초과하지 않습니다.16MB. 자동 선택이 너무 크거나 작은 경우 이 값을 수동으로 설정할 수 있지만 양수 값은 다음보다 작습니다.32kB다음과 같이 취급됩니다32kB. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.

WAL 버퍼의 내용은 매 트랜잭션 커밋마다 디스크에 기록되므로 매우 큰 값은 큰 이점을 제공할 가능성이 없습니다. 그러나 이 값을 최소한 몇 메가바이트로 설정하면 많은 클라이언트가 동시에 커밋하는 사용량이 많은 서버에서 쓰기 성능을 향상시킬 수 있습니다. 기본 설정인 -1로 선택된 자동 조정은 대부분의 경우 합리적인 결과를 제공합니다.

wal_writer_delay (정수)

WAL 작성자의 활동 라운드 사이의 지연을 지정합니다. 각 라운드에서 작성자는 WAL을 디스크에 플러시합니다. 그런 다음 잠을 잔다.wal_writer_delay밀리초 단위로 반복됩니다. 기본값은 200밀리초(200ms). 많은 시스템에서 절전 지연의 효과적인 해결 방법은 10밀리초입니다. 설정wal_writer_delay10의 배수가 아닌 값에 대한 값은 다음으로 높은 10의 배수로 설정하는 것과 동일한 결과를 가질 수 있습니다. 이 매개변수는토토 베이.conf파일 또는 서버 명령줄에서.

commit_delay (정수)

commit_delayWAL 플러시가 시작되기 전에 마이크로초 단위로 측정된 시간 지연을 추가합니다. 이는 시스템 부하가 충분히 높아 주어진 간격 내에 추가 트랜잭션을 커밋할 준비가 되는 경우 단일 WAL 플러시를 통해 더 많은 수의 트랜잭션이 커밋되도록 허용하여 그룹 커밋 처리량을 향상시킬 수 있습니다. 그러나 지연 시간도 최대로 늘어납니다.commit_delay25811_25967commit_siblings플러시가 시작되려고 할 때 다른 트랜잭션이 활성화됩니다. 또한 다음과 같은 경우에는 지연이 수행되지 않습니다.fsync비활성화되었습니다. 기본값commit_delay은 0입니다(지연 없음). 슈퍼유저만 이 설정을 변경할 수 있습니다.

포스트그레SQL9.3 이전 릴리스,commit_delay다르게 행동하고 훨씬 덜 효과적이었습니다. 모든 WAL 플러시가 아닌 커밋에만 영향을 주며 WAL 플러시가 더 빨리 완료되더라도 구성된 전체 지연을 기다렸습니다. 다음에서 시작됨토토 베이9.3, 플러시 준비가 된 첫 번째 프로세스는 구성된 간격 동안 대기하는 반면 후속 프로세스는 리더가 플러시 작업을 완료할 때까지만 기다립니다.

commit_siblings (정수)

다음을 수행하기 전에 필요한 동시 열린 트랜잭션의 최소 수commit_delay지연. 값이 클수록 지연 간격 동안 하나 이상의 다른 트랜잭션이 커밋 준비가 될 가능성이 높아집니다. 기본값은 5개의 트랜잭션입니다.

18.5.2. 체크포인트

checkpoint_segments (정수)

자동 WAL 체크포인트 사이의 최대 로그 파일 세그먼트 수(각 세그먼트는 일반적으로 16MB입니다). 기본값은 세 개의 세그먼트입니다. 이 매개변수를 늘리면 응급 복구에 필요한 시간이 늘어날 수 있습니다. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.

checkpoint_timeout (정수)

자동 WAL 체크포인트 사이의 최대 시간(초)입니다. 기본값은 5분입니다(5분). 이 매개변수를 늘리면 응급 복구에 필요한 시간이 늘어날 수 있습니다. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.

checkpoint_completion_target (부동 소수점)

체크포인트 사이의 총 시간의 일부로 체크포인트 완료 목표를 지정합니다. 기본값은 0.5입니다. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.

체크포인트_경고 (정수)

체크포인트 세그먼트 파일 채우기로 인해 발생한 체크포인트가 이 시간보다 더 가깝게 발생하면 서버 로그에 메시지를 기록합니다(이는 다음을 의미합니다.checkpoint_segments올려져야 합니다). 기본값은 30초입니다(30초). 0은 경고를 비활성화합니다. 다음과 같은 경우 경고가 생성되지 않습니다.checkpoint_timeout다음보다 작음체크포인트_경고. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.

18.5.3. 보관

archive_mode (부울)

언제archive_mode이 활성화되면 완료된 WAL 세그먼트는 설정에 따라 아카이브 저장소로 전송됩니다.archive_command. archive_modearchive_command별도의 변수이므로archive_command보관 모드를 종료하지 않고도 변경할 수 있습니다. 이 매개변수는 서버 시작 시에만 설정할 수 있습니다.archive_mode다음의 경우 활성화할 수 없습니다.wal_level다음으로 설정됨최소.

archive_command (문자열)

완성된 WAL 파일 세그먼트를 아카이브하기 위해 실행하는 로컬 쉘 명령입니다. 모두%p문자열은 아카이브할 파일의 경로 이름으로 대체되며 임의%f은 파일 이름으로만 대체됩니다. (경로 이름은 서버의 작업 디렉터리, 즉 클러스터의 데이터 디렉터리를 기준으로 합니다.) 사용%%실제 내용 삽입%명령의 문자입니다. 명령이 성공한 경우에만 0 종료 상태를 반환하는 것이 중요합니다. 자세한 내용은 참조섹션 24.3.1.

이 매개변수는 다음에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서. 다음이 아니면 무시됩니다.archive_mode서버 시작 시 활성화되었습니다. 만일archive_command은 빈 문자열(기본값)이고archive_mode이 활성화되고 WAL 보관이 일시적으로 비활성화되지만 서버는 명령이 곧 제공될 것이라는 기대로 WAL 세그먼트 파일을 계속 축적합니다. 환경archive_command아무것도 하지 않고 true를 반환하는 명령으로, 예를 들어/bin/true (REMWindows의 경우) 효과적으로 아카이브를 비활성화하지만 아카이브 복구에 필요한 WAL 파일 체인을 중단하므로 비정상적인 상황에서만 사용해야 합니다.

archive_timeout (정수)

archive_command은 완료된 WAL 세그먼트에 대해서만 호출됩니다. 따라서 서버가 WAL 트래픽을 거의 생성하지 않는 경우(또는 트래픽이 발생하는 여유 기간이 있는 경우) 트랜잭션 완료와 아카이브 저장소에 안전하게 기록되는 데 오랜 지연이 있을 수 있습니다. 보관되지 않은 데이터의 기간을 제한하려면 다음을 설정할 수 있습니다.archive_timeout서버가 주기적으로 새로운 WAL 세그먼트 파일로 전환하도록 합니다. 이 매개변수가 0보다 크면 서버는 마지막 세그먼트 파일 전환 이후 이 시간이 경과하고 단일 체크포인트를 포함한 데이터베이스 활동이 있을 때마다 새 세그먼트 파일로 전환합니다. (증가)checkpoint_timeout유휴 시스템에서 불필요한 체크포인트를 줄입니다.) 강제 전환으로 인해 조기에 닫힌 아카이브 파일은 완전히 전체 파일과 길이가 여전히 같습니다. 따라서 매우 짧은 형식을 사용하는 것은 현명하지 않습니다.archive_timeout— 아카이브 저장 공간이 너무 커질 것입니다.archive_timeout1분 정도의 설정은 일반적으로 합리적입니다. 데이터를 마스터 서버에서 더 빠르게 복사하려면 보관 대신 스트리밍 복제 사용을 고려해야 합니다. 이 매개변수는에서만 설정할 수 있습니다.토토 베이.conf파일 또는 서버 명령줄에서.