비동기 토토 커뮤니티옵션입니다 비용으로 거래가 더 빨리 완료 될 수 있습니다. 데이터베이스가 충돌. 많은 응용 프로그램에서 이것은 허용 가능한 트레이드 오프입니다.
이전 섹션에서 설명한대로 트랜잭션 커밋입니다 보통동기: 서버가 대기합니다 거래의 경우WAL반환하기 전에 영구 저장소로 플러시 할 기록 고객에 대한 성공 표시. 그러므로 고객이 있습니다 저지른 것으로보고 된 거래가 직후 서버 충돌이 발생한 경우에도 보존됩니다. 그러나 짧은 거래의 경우이 지연은 주요 구성 요소입니다. 총 거래 시간의. 비동기 토토 커뮤니티 모드 선택 트랜잭션하자마자 서버가 성공을 반환한다는 것을 의미합니다. 논리적으로 완료되면Wal실제로 생성 된 기록 디스크로가는 길. 이것은 크게 향상 될 수 있습니다 작은 거래를위한 처리량.
비동기 토토 커뮤니티은 데이터 손실의 위험을 소개합니다. 거기 있습니다 거래 완료 보고서 사이의 짧은 시간 창 고객에게 그리고 거래가 진정으로 커밋 (즉, 서버가 손실되지 않도록 보장됩니다. 충돌). 따라서 비동기 토토 커뮤니티을 사용하지 않아야합니다 고객은 외부 조치를 취할 것입니다. 거래는 기억 될 것입니다. 예를 들어, 은행은 확실히 거래 기록에 비동기 토토 커뮤니티을 사용하지 않습니다 ATM의 현금 분배. 그러나 이벤트와 같은 많은 시나리오에서 로깅, 이에 대한 강력한 보장이 필요하지 않습니다. 친절한.
비동기 토토 커뮤니티을 사용하여 취할 위험은 데이터입니다. 데이터 손실이 아닙니다. 데이터베이스가 충돌 해야하는 경우 재생으로 복구Wal최대 플러시 된 마지막 레코드. 따라서 데이터베이스가 될 것입니다 일관된 상태로 회복되었지만 모든 거래 디스크에 아직 플러시되지 않은 것은 해당 상태에 반영되지 않을 것입니다. 따라서 순 효과는 마지막 몇 번의 트랜잭션의 손실입니다. 거래가 커밋 순서대로 재생되기 때문에 아니요 불일치가 소개 될 수 있습니다 - 예를 들어, 트랜잭션 B 인 경우 이전 트랜잭션 A의 영향에 의존하여 변경했습니다. B의 효과가있는 동안 A의 효과가 손실 될 수 없습니다. 보존되어 있습니다.
사용자는 각 트랜잭션의 커밋 모드를 선택할 수 있습니다. 동기식과 비동기식을 모두 가질 수 있습니다. 동시에 실행되는 거래를 커밋합니다. 이것은 유연성을 허용합니다 성능과 거래의 확실성 간의 트레이드 오프 내구성. 커밋 모드는 사용자가 확고 할 수 있습니다 매개 변수synchronous_commit, 구성이 어떤 방식 으로든 변경할 수 있습니다. 매개 변수를 설정할 수 있습니다. 하나의 트랜잭션에 사용되는 모드 의 값에 따라 다릅니다.synchronous_commit거래 할 때 시작.
예를 들어 특정 유틸리티 명령드롭 테이블, 동기식으로 커밋해야합니다 regardless of the setting ofsynchronous_commit. 이것은 일관성을 보장하기위한 것입니다 서버의 파일 시스템과 논리적 상태 사이 데이터 베이스. 와 같은 2 단계 커밋을 지원하는 명령거래 준비, 또한 항상 있습니다 동기
위험 창에서 데이터베이스가 충돌하는 경우 비동기 토토 커뮤니티 및 거래의 글쓰기Wal기록, 변경 사항 그 거래 중에Will손실됩니다. 의 지속 시간 배경 프로세스 (이므로 위험 창이 제한되어 있습니다."Wal Writer") Flushes writtenWal매번 디스크에 대한 레코드Wal_writer_delay밀리 초. 위험 창의 실제 최대 기간은 다음과 같습니다 세 번Wal_Writer_delayWal Writer는 한 번에 전체 페이지 작성을 선호하도록 설계되었습니다. 바쁜 기간 동안.
주의 |
즉시 모드 종료는 서버와 같습니다 따라서 충돌이 발생하여 플러시되지 않은 손실이 발생합니다 비동기식 커밋. |
비동기 토토 커뮤니티은 설정과 다른 동작을 제공합니다fsync= Off.fsync는 서버 전체 설정입니다 모든 거래의 동작을 변경하십시오. 모든 논리를 비활성화합니다 이내에PostgreSQL시도 시도 데이터베이스의 다른 부분에 쓰기를 동기화하고 따라서 시스템 충돌 (즉, 하드웨어 또는 운영 체제 충돌, 실패가 아닌PostgreSQL자체)가 발생할 수 있습니다 데이터베이스 상태의 임의로 나쁜 부패. 많은 시나리오, 비동기 토토 커뮤니티은 대부분의 성능을 제공합니다 끄면 얻을 수있는 개선fsync, 그러나 데이터의 위험이 없습니다 부패.
Commit_Delay또한 비동기 토토 커뮤니티과 매우 비슷한 소리를냅니다. 그러나 실제로는 동기 커밋 방법 (실제로Commit_Delay비동기 중에 무시됩니다 저지르다).Commit_Delay지연이 발생합니다 동기식 커밋 시도 직전에 플러시를 시도하기 직전Wal디스크, 희망으로 그러한 거래 중 하나에 의해 실행 된 단일 플러시도 거의 동시에 토토 커뮤니티되는 다른 거래. 환경Commit_Delay거기에서만 도울 수 있습니다 많은 사람들이 동시에 거래를 저지르고 있습니다 실제로 도움이되는 값으로 조정하기가 어렵습니다. 처리량 아프기.