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 7516 게시물 읽기
No. 7516
많은 수의 테이블 생성
작성자
디비
작성일
2008-09-10 23:09
조회수
6,309

안녕하세요.


지금, C에서 정수를 입력받아서 DB server에서 그만큼에 해당하는 table을 생성하고 있습니다. 


현재는 입력 받는 정수를 n이라 한다면, 


for (int i=0;i<n;i++)

  PQexec (conn, "CREATE TABLE ...");


이런식으로 하고 있습니다. 문제는 n이 10000정도 되어 버리니깐 시간이 꽤 걸리더군요. 아마 테이블 하나하나 만들때마다 쿼리를 날려서 그런것 같은데, 

좀더 빠르게 할 수 있는 방법이 없을까요?


 제가 생각하고 있는 방법은


(1) transaction으로 묶어서 처리한다. (transaction이 이런 개념이 맞는지 모르겠습니다. transaction으로 묶으면 commit을 한번만 하니 웬지 빠를거 같다는)


(2) Procedure language (such as pl/pgsql)을 이용한다. 


이렇게 두가지 방법을 생각하고 있는데 고수님들의 조언 부탁드립니다. 


감사합니다.

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

어떤 방법을 써도 똑같습니다.

테이블 만들때 하는 일이 파일을 만드는 일과 함께, pg_class 테이블 및 기타 시스템 카타로그 테이블들을 많이 조작합니다, 주로 insert 작업들이겠죠.


결국 끊임 없는 create table 의 작업은 db 입장에서 보면 시스템 카타로그 테이블에 끊임 없는 insert 작업을 함을 의미합니다.


사용하고 있는 서버 버전이 하위 버전이 상위 버전으로 바꾸는 것으로 조금 빨라지게 할 수 있을 지 몰라도 기대 이상의 효과를 거두기는 힘들 것 같습니다.


그런데, 한꺼번에 1만개 이상의 테이블을 만들어야한다는 발상 자체가 정말 문제가 있는지부터 고려해보는 것이 맞아보입니다.

김상기(ioseph)님이 2008-09-11 12:25에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7520libpq에서 쿼리 날리듯 function이나 pl/pgsql날리는 방법? [1]
ㅎㅎ
2008-09-13
6030
7518프로시저 검색 [1]
유닉스
2008-09-11
6203
7517parallel 하게 DB update시 문제점 [1]
디비
2008-09-10
6089
7516많은 수의 테이블 생성 [1]
디비
2008-09-10
6309
7515[Q] cygwin에서 window로 설치된 postgresql 접근방법
정진기
2008-09-09
6137
7514postgresql 에서 oracle 로 옴기는 방법 [1]
유닉스
2008-09-06
6413
7513특정시간에 트리거실행방법 [1]
서정주
2008-09-05
6358
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다