29.3. 비동기 롤 토토

비동기 롤 토토데이터베이스가 충돌 해야하는 경우 가장 최근의 트랜잭션이 손실 될 수있는 비용으로 트랜잭션이 더 빨리 완료 될 수있는 옵션입니다. 많은 응용 프로그램에서 이것은 허용 가능한 트레이드 오프입니다.

이전 섹션에서 설명한대로 트랜잭션 롤 토토은 일반적으로입니다.동기: 서버가 트랜잭션을 기다립니다Wal클라이언트에게 성공 표시를 반환하기 전에 영구 저장소로 플러시 할 레코드. 따라서 클라이언트는 즉시 서버 충돌이 발생한 경우에도 커밋 된 것으로보고 된 거래가 보존 될 것이라고 보장합니다. 그러나 짧은 거래의 경우이 지연은 총 거래 시간의 주요 구성 요소입니다. 비동기 롤 토토 모드를 선택한다는 것은 트랜잭션이 논리적으로 완료 되 자마자 서버가 성공을 반환한다는 것을 의미합니다.Wal생성 된 기록은 실제로 디스크로 향했습니다. 이것은 작은 거래에 대한 처리량을 크게 향상시킬 수 있습니다.

비동기 롤 토토은 데이터 손실의 위험을 소개합니다. 고객에 대한 거래 완료 보고서와 거래가 진정으로 커밋되는 시간 사이에는 짧은 시간이 있습니다 (즉, 서버가 충돌하면 손실되지 않아야합니다). 따라서 클라이언트가 거래가 기억 될 것이라는 가정에 의존하는 외부 조치를 취할 경우 비동기 롤 토토을 사용해서는 안됩니다. 예를 들어, 은행은 ATM의 현금 분배를 기록하는 거래에 비동기 롤 토토을 사용하지 않을 것입니다. 그러나 이벤트 로깅과 같은 많은 시나리오에서 이런 종류의 강력한 보장이 필요하지 않습니다.

비동기 롤 토토을 사용하여 취할 위험은 데이터 손상이 아니라 데이터 손실입니다. 데이터베이스가 충돌 해야하는 경우 재생하여 복구됩니다Wal플러시 된 마지막 레코드까지. 따라서 데이터베이스는 일관된 상태로 복원되지만 아직 디스크로 플러시되지 않은 트랜잭션은 해당 상태에 반영되지 않습니다. 따라서 순 효과는 마지막 몇 번의 트랜잭션의 손실입니다. 트랜잭션이 롤 토토 순서로 재생되기 때문에 불일치가 도입 될 수 없습니다. 예를 들어, 트랜잭션 B가 이전 트랜잭션 A의 영향에 의존하는 경우 변경이 변경되면 B의 효과가 보존되는 동안 A의 효과가 손실 될 수 없습니다..

사용자는 각 트랜잭션의 커밋 모드를 선택하여 동시에 동기 및 비동기 롤 토토 트랜잭션을 동시에 실행할 수 있도록 할 수 있습니다. 이를 통해 성능과 트랜잭션 내구성의 확실성 사이의 유연한 트레이드 오프가 가능합니다. 커밋 모드는 사용자를 확보 할 수있는 매개 변수에 의해 제어됩니다synchronous_commit, 구성 매개 변수를 설정할 수있는 방식으로 변경할 수 있습니다. 하나의 트랜잭션에 사용되는 모드는의 값에 따라 다릅니다.synchronous_commit트랜잭션 롤 토토이 시작될 때.

예를 들어 특정 유틸리티 명령드롭 테이블,의 설정에 관계없이 동기식으로 커밋해야합니다.synchronous_commit. 이는 서버의 파일 시스템과 데이터베이스의 논리적 상태 간의 일관성을 보장하기위한 것입니다. 와 같은 2 단계 롤 토토을 지원하는 명령거래 준비, 항상 동기식입니다.

비동기 롤 토토과 트랜잭션 작성 사이에 위험 창에서 데이터베이스가 충돌하는 경우Wal기록, 해당 거래 중 변경 사항Will손실됩니다. 배경 프로세스 (이므로 위험 창의 지속 시간이 제한됩니다.Wal Writer) Flushes writtenWal매번 디스크에 대한 레코드Wal_writer_delay밀리 초. 위험 창의 실제 최대 기간은 세 번입니다Wal_writer_delayWAL 작가는 바쁜 기간 동안 한 번에 전체 페이지 작성을 선호하도록 설계 되었기 때문에.

주의

즉시 모드 셧다운은 서버 충돌과 동일하므로 플러시되지 않은 비동기 롤 토토이 손실됩니다..

비동기 롤 토토은 설정과 다른 동작을 제공합니다fsync= Off.fsync는 모든 트랜잭션의 동작을 변경하는 서버 전체 설정입니다. 모든 논리를 비활성화합니다postgresql데이터베이스의 다른 부분에 쓰기를 시도하고 시스템 충돌 (즉, 하드웨어 또는 운영 체제 충돌,PostgreSQL자체)는 데이터베이스 상태의 임의로 부패를 일으킬 수 있습니다. 많은 시나리오에서 비동기 롤 토토은 꺼져서 얻을 수있는 대부분의 성능 향상을 제공합니다fsync, 그러나 데이터 손상의 위험은 없습니다.

Commit_Delay또한 비동기 롤 토토과 매우 유사하게 들리지만 실제로는 동기 커밋 방법입니다 (실제로Commit_Delay비동기 롤 토토 중에 무시됩니다).Commit_Delay트랜잭션이 홍조되기 직전에 지연이 발생합니다WalDISK로, 그러한 거래에 의해 실행 된 단일 플러시가 거의 같은 시간에 저지른 다른 거래에 서비스를 제공 할 수 있기를 희망합니다. 이 설정은 트랜잭션이 단일 플러시에 참여하기 위해 그룹에 가입하여 여러 거래 간의 플러시 비용을 상각 할 수있는 시간 창을 늘리는 방법으로 생각할 수 있습니다..

정정 제출

문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면