database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Tutorials 3486 게시물 읽기
No. 3486
PostgreSQL 7.1.3(Write-Ahead Logging)
작성자
송정훈(handy)
작성일
2001-10-11 15:31
조회수
7,717

Chapter 9. 선행 기입 프로토콜(Write-Ahead protocol)에 근거한 로깅: Write-Ahead Logging (WAL )

 

Table of Contents

9.1. 개설

9.2. 실장

9.3. WAL의 설정

저자: Vadim Mikheev와 Oliver Elphick

 

9.1. 개론

 

Write Ahead Logging (WAL) 이란 트랜젝션 로깅을 하기 위한 표준적인 방법입니다.상세한 내용은 (비록 전부는 아니지만) 이 책의 트랜젝션 처리 부분에서 설명되어 질 것입니다. 간단히 말해서 WAL의 기본적인 개념은 데이터파일 (table 이나 index가 저장되어 있는)을 변경하게 되는 모든 내용은 반드시 변경사항을 파일에 기록하기 전에 변경 내용을 미리 로그로 남긴다는 것이다.즉,로그가 영구적인 기억장치에 flush 될때 기록되는 것이다. 이와 같은 순서에 따라 처리를 하면, 예를 들어 비록 디비가 crash 되어도 로그를 이용하여 Database 를 복구할 수 있기 때문에, 매 트랜잭션(transaction)의 commit 할때마다 데이터 페이지 (data page)를 디스크에 flush 할 필요가 없어 집니다. 데이터 페이지에 대해 아직 행해지지 않은 변경분은 로그 기록을 사용하여 복구할 수 있습니다. (이것이 Roll forward recovery 입니다. REDO로서 알려져 있습니다) 또,commit 되고 있지 않는 트랜젝션은 데이터 페이지 (data page) 로부터 삭제됩니다.(이것은 Roll backward recovery,즉 UNDO로서 알려져 있습니다.)

 

9.1.1. WAL 의 장점

WAL을 받아들인 1번째가 명백한 이점은 디스크(disk)에의 서 입고 덤 회수가 대폭적으로 감소한 것입니다.라는 것은 ,토란자쿠숀코미 토의 때에 로그(log) 파일(file)만을 디스크(disk)에 내뱉으면 좋은지들로 す.멀티(multi) 유저(user) 환경에서는 많은 트랜잭션(transaction)의 위탁(commit)가 로그(log) 파일(file)에의 1 회의 fsync()로 해결되다 빗다 죄로 옵니다.그만큼 가 아니라,로그(log) 파일(file)에의 기입은 순차(sequential)에 기입된 논 싹,데이터(data) 페이지(page)를 내뱉는 비용(cost)에 비교하고 로그(log) 파일(file)에의 기입은 질질 끌고 라고(와) 저비용이 됩니다.

 

2번째의 메리트(merit)는 ,데이터(data) 페이지(page)의 일관 성입니다.정말에 관한 것 말하면 WAL 이(가) 도입된 전은 , PostgreSQL 은 충돌(crash) 한 때에 일관 성 을(를) 유지할 수 있다고 말한 보증은 있지 않았습니다.WAL 도입 이 전에서는 ,기입 중(속)에 충돌(crash) 한 경우에 다음과 같은 것이 일어나는 가능 성이 있습니다.

 

 

존재하지 않는 테이블(table)의 행을 인덱스타풀이 가리킨다

 

(btree의)분할중에 인덱스타풀이 잃게 된다

 

부분적으로 밖에 데이터(data)가 쓰여져 있지 않는기 위해(때문에) ,완전하게 테부 루나 인덱스(index)의 페이지(page)의 내용이 부서지고 버린다

 

이 인덱스(index)에 관계된 문제(위의 1과 2)는 , fsync() 의(것) 호출을 추가하면 해결할 수 있는 가능성 이(가) 있습니다.그러나 WAL 고함치고 경우,최후의 문제를 해 결정되든지 라는 것은 모릅니다.WAL 은 페이지(page) 전체 의(것) 내용을 로그(log) 파일(file)에 보존하고,필요하다면 쿠라슈리카바리의 때에 페 지 내용의 일관성을 유지하기 위해(때문에) 사용합니다.

 

9.1.2. 장래의 메리트(merit)

이번의 이 WAL 의(것) 최초의 실장으로는 ,시간이 부족하다 다노에서 UNDO 조작은 실장 되어 있지 않습니다.이 때문에 실패(abort)한 토란자쿠 숀은 여전히 디스크(disk) 스페이스(space)를 사용하고 있고,트랜잭션(transaction)의 상태를 기록하기 위해(때문에) 영속적인 pg_log 파일(file)를 필요로 하고 있습니다.왜냐하면,트랜잭션(transaction) 식별자를 재이용한 것 축하할 수 없기 때문입니다.한번 UNDO가 실장 되면, pg_log 을(를) 영속적으로 유지한 필요는 있지 않습니다. pg_log 을(를) 부분(segment)에 분할하고,오래된 부분(segment)를 삭제한 것에 의하고 조업 정지(shutout)의 때에 pg_log 을(를) 삭제한 것이 가능합니다.

 

또 UNDO에 의하고,savepoints 을(를) 실장 한 것 축하할 수 있습니다.그렇다면,부정한 트랜잭션(transaction) 처리(타입(type) 미스(Miss)에게 る 투시도(perspective drawing) 에러(error),중복된 푸라이마리/유니크(unique) 키(key)에의 삽입,등)를 부분적으로 반격(rollback)할 수 있습니다.savepoints 은 토란자쿠쇼 ㄴ의 에러(error)가 된 전에 실행된 유효한 조작을 계속 내지 위탁(commit)한 こ 죄로 옵니다.현재,어떤 에러(error)도 트랜잭션(transaction) 전체를 무효 에(로) 하기 때문에 트랜잭션(transaction)의 실패(abort)가 필요해집니다.

 

WAL에 의하고,데이터(data) 베이스(bass)의 온라인박아 푸 그리고 리스토아( BAR)를 하기 위한 새로운 방법을 씨 장으로 자른 가능성이 있습니다.이 방법으로는 ,정기적으로 데이터(data) 파일(file)를 타 의(것) 디스크(disk),테이프(tape),또는 다른 호스트(host)에 보존하고,또 WAL의 로그(log) 파일(file)를 아카이브(archive)한 필요가 있습니다. 데이터(data) 파일(file)의 카피(copy)라고 아카이브(archive)된 로그(log)를 사용하고,충돌(crash)의 후에 리카바리를 한 것과 동일한 상태에 리스토아할 수 있습니다.데이(day) 타베스파일코피를 만들는 정도에 오래된 로그(log) 파일(file)를 삭제해도 끼우고 늘릴 수 없다.이 기능을 실장 하기 위해서는,데이터(data) 파일(file)와 인덱스(index)의 생성과 삭제를 로깅 한 것이 필요합니다.또,데이터(data) 파일(file)를 카피(copy) 한 수법을 개발한 필요가 있습니다.(OS가 제공한 코피코만 도는 사용할 수 없습니다.)

이 글에 대한 댓글이 총 3건 있습니다.

제송합니다.

제가 영문법 번역은 자신이 없어 일한번역기로

번역하였읍니다. 재익님의 성의인는답변에 제가할수인는 최데한의 성의입니다...

handy님이 2001-10-11 15:34에 작성한 댓글입니다.

아니 한글 문법도 엉망

죄송합니다....

코멘트는 수정이 안되는지요....

handy님이 2001-10-11 15:36에 작성한 댓글입니다.

일본에 있는 PostgreSQL 메뉴얼 번역내용을 일본어 번역사이트를 이용하여 번역한 내용을 그대로 올리신 것 같군요. 정훈님 혹시 우리말로 의미가 잘 통하도록 수정좀 해 주시면 어떨까요. 읽어 보니 내용이 좀 잘 통하질 않는 것 같습니다. :-)

advance님이 2001-10-13 21:44에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3561Windows 용 PostgreSQL 의 설치 방법 [2]
정재익
2001-10-21
8110
3547PostgreSQL 을 사용하면서 모은 몇가지 Tip 들...
정재익
2001-10-19
18148
3489SSH 터널(tunnel)를사용한 안전한 TCP/IP 접속 [1]
송정훈
2001-10-12
5613
3486PostgreSQL 7.1.3(Write-Ahead Logging) [3]
송정훈
2001-10-11
7717
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다