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 7025 게시물 읽기
No. 7025
테이블 생성시 자동으로 생성되는 컬럼들..
작성자
tyro
작성일
2007-01-28 12:59
조회수
5,086

테이블을 만들게 되면
히든컬럼(?) 이 자동으로 만들어지는데... 각각의 컬럼은 무엇을 의미하는지 알고 싶습니다.


tableoid,
cmax
xmax
cmin
xmin
ctid
oid

이런것이 자동 생성되더군요..

이것이 뭔지 잘 모르겠네요..
tableoid 와 oid 는 알겠는데..

without oids 일 경우 oid 컬럼은 안 생기네요..

그외 것들은 뭘 하는거죠?

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

아참 버젼은 8.1.4 이고, 디폴트는 without oids 입니다.

tyro님이 2007-01-28 13:51에 작성한 댓글입니다. Edit

시스템 카탈로그 테이블처럼, 
그런 것을 시스템 칼럼이라고 합니다. 
신경을 전혀 안써도 될 부분에 관심을 ^^



자세한 것은 
http://www.postgresql.or.kr/pgdoc/ddl-system-columns.html
문서를 참조하시고, 
이 문서를 읽으려면, row version 이라는 단어를 이해하고 있어야합니다. 

데이터베이스 이론서에 나오는 하나의 테이블이란 여러 로우의 집합이이고, 하나의 로우는 여러 칼럼의 집합이다 라는 말이 실제 데이터베이스의 물리적인 저장에 있어서는 약간 틀립니다. 

하나의 테이블은 여러 로우로 구성되고, 하나의 로우는 여러개의 로우 버전으로 기록된다. 
새로운 insert, update, delete 작업이 일어났다면, 하나의 테이블에는 또 하나의 로우버전이 생기게 됩니다. 그리고, 필요에 따라서 그 버전 가운데 하나를 쓰게 됩니다. - 트랜잭션의 독립성을 부여하기 위해서 이런 방식을 택한다고 하네요.


oid는 로우의 고유 식별자 - 식별 번호죠

tableoid는 이 테이블의 고유 식별 번호 = pg_class.oid

xmin, xmax, cmin,cmax 는 모두 자료의 변경사항에 대한 기록입니다. 
vacuum 작업이 바로 이 값들을 재조정합니다. 
이 값들은 모두 32비트 정수형인지라, 21억... 어쩌고 저쩌고까지밖에 기록을 담아낼 수 없습니다. 
그래서, 더이상 필요없다고 생각되면 이 값들을 reset을 하죠.
(현재로써는 이 문제를 풀어낼 대안이 없다고 하네요. 
아마 auto vacuum 기능이 시스템 내부에 자동으로 설정되고 사용자들이 전혀 모르게 움직이고, 
설정값 조정 조차도 못하게 만드는 그때가 되면, 개발자가 아닌 이상 이런 값들에 대한 관심이
완벽히 없어지지 않을까싶네요. 
심심하시면, insert, update, delete 작업을 하면서, 이 값들이 어떻게 바뀌는지 살펴보시면 됩니다)

ctid 로우버전의 물리적인 위치 - 이놈은 vacuum full 작업을 하면 바뀌게 됩니다. 일반적으로 하드디스크에 있는 테이블 파일이 손상 되어 저수준으로 복구해야할 경우에 쓰이는 것 빼고는 일반사용자에게는 전혀 안쓰입니다. 

요기까지가 내부를 들여다보는 PostgreSQL 수다였습니다. ^^

김상기(ioseph)님이 2007-01-28 23:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7028올바른 sql문의 실패가 나는 경우가 있나요? [2]
권영진
2007-01-30
4367
7027array_prepend 사용. [2]
백수환
2007-01-30
3891
7026pgsql/data 가 data_old로 바뀐현상 [1]
초보
2007-01-29
4053
7025테이블 생성시 자동으로 생성되는 컬럼들.. [2]
tyro
2007-01-28
5086
7024pg_dumpall 후 에러가 났습니다. 도와 주세요. [1]
정구윤
2007-01-27
4477
7023XP에 PostgreSQL 설치시 에러 [1]
김수헌
2007-01-25
4389
7022오늘날짜랑 비교해서 전후 가장 가까운 날짜 뽑기 [2]
초보
2007-01-25
10857
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다