| PostgreSQL 9.0.23 문서 | ||||
|---|---|---|---|---|
| 와이즈 토토 : 문서 : 9.0 : 쓰기 호위 (WAL) | 메이저 토토 사이트 : 문서 : 9.0 : 신뢰성과 쓰기 로그 | 29장. 신뢰성 및 미리 쓰기 로그 | PostgreSQL : 문서 : 9.0 : 롤 토토 구성 | |
비동기 와이즈 토토옵션은 다음과 같습니다 다음과 같은 비용으로 거래를 더 빨리 완료할 수 있습니다. 데이터베이스가 필요한 경우 가장 최근의 트랜잭션이 손실될 수 있습니다. 충돌. 많은 애플리케이션에서 이는 허용 가능한 절충안입니다.
이전 섹션에서 설명한 대로 트랜잭션 커밋은 일반적으로동기식: 서버가 기다립니다 거래의 경우WAL기록을 반환하기 전에 영구 저장소로 플러시할 레코드 클라이언트에게 성공 표시. 그러므로 클라이언트는 커밋된 것으로 보고된 트랜잭션이 완료될 것임을 보장합니다. 직후 서버 장애가 발생하더라도 보존됩니다. 그러나 짧은 거래의 경우 이러한 지연은 주요 구성 요소입니다. 총 거래 시간의 비동기 와이즈 토토 모드 선택 이는 트랜잭션이 완료되자마자 서버가 성공을 반환한다는 의미입니다. 논리적으로 완료되기 전에,WAL그것이 생성한 기록이 실제로 만들어졌습니다 디스크로 가는 길. 이는 상당한 향상을 제공할 수 있습니다. 소규모 거래의 처리량.
비동기 와이즈 토토으로 인해 데이터 손실 위험이 발생합니다. 있다 거래 완료 보고 사이의 짧은 시간 간격 클라이언트와 거래가 실제로 이루어지는 시간 커밋됨(즉, 서버가 충돌). 따라서 다음과 같은 경우 비동기 와이즈 토토을 사용해서는 안 됩니다. 클라이언트는 다음과 같은 가정에 의존하여 외부 조치를 취할 것입니다. 거래는 기억될 것입니다. 예를 들어, 은행은 확실히 트랜잭션 기록에 비동기 와이즈 토토을 사용하지 마세요. ATM의 현금 인출. 그러나 이벤트와 같은 많은 시나리오에서는 로깅에는 이에 대한 강력한 보장이 필요하지 않습니다. 종류.
비동기 와이즈 토토을 사용하여 감수하는 위험은 데이터입니다 데이터 손상이 아니라 손실입니다. 데이터베이스가 충돌하면 재생하여 회복WAL최대 플러시된 마지막 레코드입니다. 따라서 데이터베이스는 일관성 있는 상태로 복원되었지만 아직 디스크에 플러시되지 않았으므로 해당 상태에 반영되지 않습니다. 따라서 최종 효과는 마지막 몇 개의 거래가 손실되는 것입니다. 트랜잭션은 커밋 순서대로 재생되므로 불일치가 발생할 수 있습니다. 예를 들어 거래 B가 이전 거래 A의 영향에 따라 변경을 수행했습니다. A의 효과가 사라지는 동안 B의 효과가 사라지는 것은 불가능합니다. 보존됩니다.
사용자는 각 트랜잭션의 커밋 모드를 선택할 수 있습니다. 동기식과 비동기식을 모두 가질 수 있다는 것 동시에 실행되는 트랜잭션을 커밋합니다. 이를 통해 유연하게 성과와 거래 확실성 사이의 균형 내구성. 커밋 모드는 사용자 설정에 의해 제어됩니다. 매개변수동기_와이즈 토토, 이는 구성에 따라 어떤 방식으로든 변경될 수 있습니다. 매개변수를 설정할 수 있습니다. 하나의 트랜잭션에 사용되는 모드 의 값에 따라 달라집니다.동기_와이즈 토토트랜잭션 와이즈 토토 시 시작됩니다.
특정 유틸리티 명령, 예를 들어드롭 테이블, 강제로 동기적으로 와이즈 토토됩니다. 설정에 관계없이동기_와이즈 토토. 이는 일관성을 보장하기 위한 것입니다. 서버의 파일 시스템과 논리적 상태 사이의 데이터베이스. 다음과 같은 2단계 커밋을 지원하는 명령거래 준비, 또한 항상 동기.
다음 사이의 위험 기간 동안 데이터베이스가 충돌하는 경우 비동기 와이즈 토토 및 트랜잭션 작성WAL기록 후 변경사항 발생 해당 거래 중할 것이다길을 잃다. 기간 백그라운드 프로세스("WAL 작성자") 기록되지 않은 플러시WAL디스크에 기록 간격wal_writer_delay밀리초. 위험 창의 실제 최대 기간은 다음과 같습니다. 세 번wal_writer_delay왜냐하면 WAL 작성자는 한 번에 전체 페이지를 작성하는 것을 선호하도록 설계되었습니다. 바쁜 시간에는.
| 주의 |
|
즉시 모드 종료는 서버 종료와 동일합니다. 충돌이 발생하므로 플러시되지 않은 모든 항목이 손실됩니다. 비동기 와이즈 토토. |
비동기 와이즈 토토은 설정과 다른 동작을 제공합니다.fsync= 꺼짐.fsync서버 전체 설정은 다음과 같습니다. 모든 거래의 행동을 변경합니다. 모든 논리를 비활성화합니다. 이내포스트그레SQL그 시도는 데이터베이스의 다른 부분에 대한 쓰기를 동기화합니다. 따라서 시스템 충돌(즉, 하드웨어 또는 운영 체제 충돌, 실패가 아님PostgreSQL자체)가 발생할 수 있습니다. 데이터베이스 상태가 임의로 손상되었습니다. 많은 것에서 시나리오에서는 비동기 와이즈 토토이 대부분의 성능을 제공합니다. 끄면 얻을 수 있는 개선 사항fsync, 하지만 데이터 위험은 없음 부패.
commit_delay또한 비동기식 커밋과 매우 비슷해 보이지만 실제로는 동기식 커밋 방법(실제로는commit_delay비동기 중에는 무시됩니다. 와이즈 토토).commit_delay지연 발생 동기 와이즈 토토이 플러시를 시도하기 직전에WAL디스크에, 희망을 가지고 그러한 트랜잭션 중 하나에 의해 실행되는 단일 플러시도 제공될 수 있습니다. 거의 동시에 와이즈 토토되는 다른 트랜잭션. 설정commit_delay있을 때만 도움을 줄 수 있습니다 동시에 와이즈 토토되는 트랜잭션이 많으며, 실제로 도움이 되는 값으로 조정하는 것이 어렵습니다. 처리량이 저하됩니다.