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 5122 게시물 읽기
No. 5122
[질문]serial 필드 생성시 만들어지는 시퀀스테이블...
작성자
wooki
작성일
2003-12-26 17:06
조회수
3,377

시리얼형을 만들면 시퀀스가 만들어지구 해당되는 시퀀스 테이블이 생성됩니다.

지금 습관상(^^?) 테이블마다 시리얼형을 꽤 많이 잡아서, 시퀀스 테이블이 너무 많아졌습니다.

테이블이 넘 많아셔서 보기에도 복잡합니다.

그래서, 질문을 드리는 것인데....

이렇게 무분별하게 시리얼형을 많이 잡으면, 어떤 문제점이 있는지...

특히 DB속도 저하에 문제가 될 수 있는지....

매번 Mysql로 작업만 하다 이번에 PG를 사용하고 있는데......

궁금점이 생겨서 글을 올립니다.

그럼 답변을 기다리겠습니다. ^^;

 

추신.

한해가 저물어가네요.

다들 지나친 음주와 가무로 몸을 망치시지 마시구,

한해를 잘 정리합시다 ^^;

주위에 따뜻한 손길도 잊지마시구요.

그럼 해피 뉴 이얼~~~

아듀 2003 !!! ^^

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

serial 형식이 생긴지 오래지 않아서 인지..(아니면 제가 몰랐었던건지 --;;)

전 시리얼 형식을 잘쓰지 않습니다만.. 사실 아예 안썼습니다 --;;

제가 전까지 알던 시리얼 형식은..

자동으로 int 형식의 컬럼을 만들고 시퀀스를 생성하고 int 형식의 컬럼의 기본 값을 nextval(시퀀스) 로 해주는 것 뿐이라고 알고 있습니다..

단지 편의를 위해서만 존재하는 것 아닐까요 -_-;

 

7.4 메뉴얼에는 이렇습니다.

CREATE TABLE tablename (
    colname SERIAL
);

is equivalent to specifying:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);

에.. 그러므로.. 일반적인 무분별한 상황(??) 이라면 보통 사용하는 것과 별 관계가 없을 듯 싶습니다.. -.-;;

아닌가요? -.-;;

신기배(nonun)님이 2003-12-27 09:07에 작성한 댓글입니다.

시리형은 7.3.x 버전부터 하나의 독립된 자료형처럼 처리되었습니다.

 

내부적으로는 시퀀스를 만들고, 그 칼럼에 nextval 함수를 default 값으로 지정한다는 것은 옛날이나 지금이나 다른 것이 없지만,

 

7.3.x 부터는 serial 형으로 지정하면, 제약 조건이 하나 더 생겨서 테이블이 삭제 되면 시퀀스도 함께 삭제 되도록 하고, dump를 하게 되면, nextval 함수가 다시 serial로 표현되도록 합니다.

 

즉, 간단히 생각해서,

create table t (seq serial)

이놈과,

 

create sequence t_seq_seq

create table t (seq int default nextval('t_seq_seq'))

이 놈의 차이는

윗 쿼리가 시스템 카타로그에 제약조건 하나가 더 생기는 꼴이 되는 것입니다.

 

즉, 무지막지한 시퀀스 사용은 시스템 카타로그 자료들이 무지막지하게 쌓이게 된다는 것이겠지요. :)

 

시스템 카타로그 자료가 얼마만큼 쌓여야 시스템에 부하를 주는가는 모르겠습니다.

(제가 일하고 있는 곳에서는 한 데이터베이스에 약 2,000여개의 테이블이 있는데, 시스템 카타로그 테이블에서 인덱스 없이 쿼리를 사용해야할 경우는 조금 버벅거리기도 합니다.)

 

하지만,

일반적인 실무에서 대부분의 primary key를 serial 형으로 잡는다고 해서 db 서버에 영향을 많이 미친다고는 보지 않습니다. (개인적인 생각)

 

만일 누가 primary key의 자료형으로 무엇이 제일 보편적이고, 타당할까요? 라고 묻는다면, 저는 언제나 serial 형이라고 말합니다. 물론 예외들도 무진장 많겠지만.

 

김상기(ioseph)님이 2003-12-27 10:49에 작성한 댓글입니다.

아 그럼 상기님 이미

 

create sequence t_seq_seq

create table t (seq int default nextval('t_seq_seq'))

 

이렇게 생성된 컬럼에 serial 처럼 바꿀수 있도록 제약조건을 거는것은 혹시 가능한가요? ^^;;

신기배(nonun)님이 2003-12-27 10:55에 작성한 댓글입니다.

contrib/adddepend

안에 있습니다.

소스가 너무 복잡해서 저는 해석이 불가능 하더군요. :(

 

serail 로 검색해 보시면, 쿼리 하나가 나오는데,

아무튼 시스템 카타로그 관련으로 훤히 꿰고 있어야 읽고 원하는대로 작업을 할 수 있을 듯싶습니다.

 

저는 귀찮아서 그냥 덤프받아서 다시 serail이라고 다시 고치고, 다시 새 db에 넣었습니다. (이게 속편한지라 - 이렇게 게을러지면 안되는데...)

 

김상기(ioseph)님이 2003-12-27 11:00에 작성한 댓글입니다.

기배님 상기님 감사합니다.

항상 많은 것을 배워가네요 ^^;;;

그리고, 마지막 귀찮아서..게을러지면 안되는데...

이말이 참 ^^; 가슴을 찌르네요.

두 분 모두 남은 한해 잘 보내시고, 새해 복 많이 받으세요.

그럼 즐~~

우기님이 2003-12-29 09:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5125tsearch2 사용기 [3]
김상기
2003-12-28
6012
5124rtree 인덱스 질문 [1]
김상기
2003-12-27
2864
5123serial 과 index (두가지질문) [5]
초보
2003-12-27
3368
5122[질문]serial 필드 생성시 만들어지는 시퀀스테이블... [5]
wooki
2003-12-26
3377
5120[jdbc]pgsql7.4 윈도우에서 JDBC사용?? 안되요?? [2]
황남주
2003-12-26
2438
5118postgresql이 중지되었을때 로그등이 남는지요? [1]
성치훈
2003-12-26
1955
5115pgsql의 벡엔드 <-> 프론트엔드 프로토콜에 관한 자료가 없을까요? -.- [5]
신기배
2003-12-23
2148
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다