저자 :Vadim Mikheev and Oliver Elphick
미리 로깅 쓰기(WAL)는 거래에 대한 표준 접근법입니다 벌채 반출. 자세한 설명은 대부분 발견 될 수 있습니다 (그렇지 않은 경우 모든) 거래 처리에 관한 책. 간단히,Wal의 중심 개념은 데이터 변경이라는 것입니다 파일 (테이블 및 지수가있는 곳) 은만 작성해야합니다. 이러한 변경 사항이 기록 된 후 - 즉, 로그인 때 레코드는 영구 저장소로 플러시되었습니다. 우리가 따를 때 이 절차는 데이터 페이지를 플러시하여 디스크를 켜질 필요가 없습니다. 우리는 그 경우에 그것을 알고 있기 때문에 모든 거래 커밋 충돌 로그를 사용하여 데이터베이스를 복구 할 수 있습니다. 데이터 페이지에 적용되지 않은 변경 사항은 다음과 같습니다. 먼저 로그 레코드에서 다시 작성하십시오 (이것은 롤 포워드입니다. 복구, redo라고도 함) 및 변경 사항 커밋되지 않은 트랜잭션은 데이터 페이지에서 제거됩니다 (롤백 복구 - 실행 취소).
사용의 첫 번째 명백한 이점Wal는 크게 감소 된 수입니다 디스크는 로그 파일 만 플러시해야하므로 트랜잭션 커밋시 디스크; 다중 사용자에서 환경, 많은 거래의 커밋이있을 수 있습니다 싱글로 달성fsync ()12810_12988
다음 이점은 데이터 페이지의 일관성입니다. 그만큼 진실은 그 전에Wal, 토토 사이트결코 할 수 없었습니다 충돌의 경우 일관성을 보장합니다. 전에Wal, 글쓰기 중 충돌 결과를 초래할 수 있습니다 :
존재하지 않는 테이블 행을 가리키는 색인 튜플
분할 작업에서 손실 된 색인 튜플
완전히 손상된 테이블 또는 인덱스 페이지 컨텐츠 부분적으로 작성된 데이터 페이지
이 첫 번째 릴리스에서Wal, 시간이 부족하여 실행 취소 작동은 구현되지 않습니다. 이는 중단 된 거래에 의한 변경이 될 것임을 의미합니다 여전히 디스크 공간을 차지하고 있으며 우리는 여전히 영구가 필요합니다PG_LOG상태를 유지하는 파일 거래를 재사용 할 수 없기 때문에 거래 식별자. 실행 취소가 구현되면PG_LOG더 이상 필요하지 않습니다 영구적인; 제거 할 수 있습니다PG_LOG종료시 세그먼트로 나눕니다 오래된 세그먼트를 제거하십시오.
실행 취소를 사용하면 구현할 수도 있습니다SavePoints부분 롤백을 허용합니다 유효하지 않은 트랜잭션 운영 (파서 오류가 발생합니다 안개화 명령, 중복 1 차/고유의 삽입 Keys 등) 계속하거나 유효한 능력으로 오류 전에 트랜잭션에 의해 수행 된 작업. ~에 현재, 모든 오류는 전체 트랜잭션을 무효화합니다 거래 중단이 필요합니다.
Wal기회를 제공합니다 데이터베이스 온라인 백업 및 복원을위한 새로운 방법 (bar). 이 방법을 사용하려면 하나입니다 데이터 파일을 다른 사람에게 정기적으로 저장해야합니다. 디스크, 테이프 또는 다른 호스트 및 아카이브Wal로그 파일. 데이터베이스 파일 보관 된 로그 파일을 복사하는 데 사용될 수 있습니다. 마치 충돌 후 복원하는 것처럼. 새로 새로운 데이터베이스 파일 사본은 이전 로그 파일이 될 수 있습니다. 제거됨. 이 시설을 구현하려면 벌목이 필요합니다 데이터 파일 및 인덱스 생성 및 삭제; 그것은 또한 데이터 파일 복사 방법을 개발해야합니다. (운영 체제 복사 명령이 적합하지 않음).