2014-09-16 11 views
0

Postgres에서 WAL (Write-ahead-logging)을 사용하여 작업하고 싶습니다. 누구든지 Postgres 코드베이스의 WAL 구현을 가리킬 수 있습니까? 난 단지 현재의 구현을 알고 그것을 수정하기를 원한다. Postgres의 모든 버전은 WAL이 없으면 괜찮습니다.Postgres에서 사용되는 Write-ahead-logging (WAL)

미리 감사드립니다.

+0

관심 분야에서 트랜잭션 로깅을 사용하여 수행하려는 작업은 무엇입니까? –

+1

pgsql-hackers에 게시 한 것 같습니다 : http://www.postgresql.org/message-id/[email protected]om. 만약 당신이 그렇게하려고한다면, 사람들이 중복 된 답변으로 시간을 낭비하지 않도록 서로 연결하십시오. –

답변

1

코드의 주요 부분은 여기에 있습니다 :

src/backend/access/transam/xlog.c 

그리고 :

src/backend/access/transam/README 

그러나 물론 WAL을 할 필요가

전체 코드베이스를 침투한다.

발을 젖게하는 데 가장 어려운 출발점을 택한 것 같습니다. (나는 알아야한다 - 그것이 또한 내가 그것을 어떻게했는지).

+0

감사합니다. 나는 그것이 복잡하다는 것을 모른다. – Zack

0

WAL은 미리 쓰기 로깅입니다. 기본적으로 데이터베이스가 실제로 작업을 수행하기 전에 은 작업을 수행하기 위해 로그에 기록합니다. 그런 다음 가 가면됩니다. 이것은 데이터 일관성을 보장합니다. 갑자기 컴퓨터의 전원이 꺼진 이라고 가정 해 봅시다. 이 발생할 수있는 몇 가지 점이 있습니다. 1) 쓰기 전에 -이 경우 데이터베이스는 미리 쓰기 로깅없이 으로 문제가되지 않습니다.

2) 쓰기 중 미리 기록 로깅 중에 컴퓨터에 전원이 공급되는 동안 이 꺼지면 데이터베이스에 남아있는 내용을 알 수 없으므로 또는 작성중인 내용을 알 수 없습니다. 포스트 그레스, 이것은 이 두 가지 가능성으로 분류 furthere입니다 :

가 로그에 기록하는 동안 전원 오프가 발생
  • -이 경우는, 로그는 롤백됩니다. 데이터가 데이터베이스에 제대로 기록되지 않았으므로 데이터베이스는 영향을받지 않습니다. 디스크에 쓰는 동안

  • 전원 오프

    는 로그에 기록 후 발생 -이 경우, 포스트 그레스는 간단하게 쓸 수 을했는데 무엇 로그에서 읽고 쓰기를 완료 할 수 있습니다.

3) 쓰기 후 - 다시, 이것은 또는 WAL없이 중 포스트 그레스에 영향을주지 않습니다.

또한 WAL은 랜덤 액세스 쓰기를 디스크에 지연시킬 수 있고 오랜 시간 동안 에 대한 로그에 순차적으로 쓰기 만하므로 PostgreSQL의 효율성을 높입니다. 이것은 dissk가하고있는 머리를 찾는 양을 줄입니다. WAL 파일을 다른 디스크에 저장하면 더 많은 속도 ( )를 얻을 수 있습니다.