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 Q&A 7047 게시물 읽기
No. 7047
[질문]template0을 vacuum으로 돌릴수가 있나요?
작성자
최재원(rokuroku)
작성일
2007-02-14 11:49
조회수
5,350

안녕하세요 


현재 사용하는 디비의 트랜잭션 ID가 20억이 가까워져서 postgres와 template1은 


버큠을 돌려서 10억으로 되돌렸는데요


template0은 버큠 명령이 먹지를 않네요.


이대로 놔두어도 되는건지, 아니면 initdb부터 다시 해야하는지가 궁금합니다.

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

트랜잭션 id는 데이터베이스 클러스트 단위입니다. 


template0 데이터베이스에 어떠한 트랜잭션 작업 - 여기서 트랜잭션 작업은 sql의 transaction을 이야기하는게 아니라, 하나의 db 자료가 바뀌는 작업을 말합니다 - 이 없었다면, vacuum 작업을 안해도 됩니다.


xid (트랜잭션 id) overwrap 문제는 이미 하드 디스크에 완벽 처리가 다 되었고 더 이상 redo 작업을 하지 않을 것이 확실하다는 것에 대한 자료에 대해서 더이상 xid 관리를 하지 않겠다는 것을 의미하거든요.


그러니, 특별히 서버가 비정상적으로 종료되는 문제를 위한 최근 트랜잭션 로그들만 잘 보관된다면, 

주기적인 vacuum 작업으로 정리하면, xid overwrap 문제는 크게 심각한 것이 안 될 것 같습니다.

김상기(ioseph)님이 2007-02-14 15:55에 작성한 댓글입니다.

답변 감사합니다.

제가 이해력이 부족해서인지 완벽하게 이해가 안되네요.

현재 다음 쿼리를 날렸을 때

SELECT datname, age(datfrozenxid) FROM pg_database;

datname     age
-----------------------
postgres     1204265912
template1    1075713743
template0    1722279687

이렇게 뜨는데요. 두번째의 수치는 위의 쿼리를 반복하면 셋 다 증가하고 있습니다.
그래서 postgres와 template1을 버큠을 해준거였던거구요.

문서를 보다가 15억이 넘으면 버큠을 돌릴 때 postgres에서 warning을 낸다고 봐서
실제로 확인해보니 warning을 날려서 버큠을 돌린거였구요.

그러다보니 template0은 버큠이 실패가 난 것이었습니다.

현재 template0 쪽의 수치도 계속 늘어가는데, 그게 트랜잭션 작업이 있는거 아닌가요?

그리고 저 세 개의 수치는 항상 똑같은 수치로 올라가는데, 

항상 저 셋은 같이 움직이는 것인지도 궁금합니다.

최재원(rokuroku)님이 2007-02-14 18:25에 작성한 댓글입니다.

pg_database.datfrozenxid 값은 

해당 데이터베이스의 테이블에서 사용할 수 있는 최소 xid 입니다. 

즉, 그 테이블이 트랜잭션 작업을 시작할 때, 그 xid 값을 이보다 작게는 시작할 수 없다는 것을 지정하는 것입니다. 


앞에서 이야기 했듯이, xid 는 데이터베이스 클러스터 단위인지라, 같이 움직이는게 맞고요. 


template0에 대한 vacuum 문제는 신경을 안써도 됩니다. 

왜냐하면 template0놈은 initdb 때 만들어지는 최초의 데이터베이스 모습이거든요.

일반적으로 create database에서는 tempate1 을 사용하며, 

template0 쪽으로는 접속조차 할 수 없게 만들어두고 있기 때문에, xid overwrap - 알고 봤더니, wraparound라고 하네요. 우리말로는 어떻게 옮기는게 좋을지 모르겠습니다. 한바퀴 휙~ 돌아서 같은 xid를 사용하게 되어 데이터가 이상하게 꼬이는 현상 정도 - 현상이 일어날 일이 없기 때문입니다. 


꼼꼼히 질문하게 되니까, 꼼꼼히 살펴보게 되네요.

덕분에 하나 배웠습니다.

김상기(ioseph)님이 2007-02-15 17:04에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7050[Help] 이 쿼리를 최적화 할 수 있는 방법이 없을까요? [1]
강상욱
2007-02-14
4343
7049몇일동안 고민중입니다 ㅠㅠpostgresSQL + Apache + PHP [2]
정희진
2007-02-14
4535
70487.1.1버전에서 유저들의 실행 쿼리 파악하는 법? [3]
dba
2007-02-14
4208
7047[질문]template0을 vacuum으로 돌릴수가 있나요? [3]
최재원
2007-02-14
5350
7046도와주실분 급구합니다. [2]
김창섭
2007-02-13
4592
7045타 DB 정보 열람 등등... [7]
tyro
2007-02-12
4896
7040몇분전 자료 가져오기 [2]
박중규
2007-02-08
4606
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다