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 7517 게시물 읽기
No. 7517
parallel 하게 DB update시 문제점
작성자
디비
작성일
2008-09-10 23:19
조회수
6,090

안녕하세요.


이번에는 약간 다른 문제를 질문드리려고 하는데요. 


현재 상황부터 말씀드릴께요. 지금 DB server에는 HEAP이라고 하는 table이 하나 있습니다. 다음과 같이 구성되어 있고요.


INT seq1   |    INT pos1   | INT seq2   | INT pos2  |  FLOAT weight


그리고 parallel하게 약 100여개의 컴퓨터에서 동시에 이 한 테이블에 데이터를 쓰고 있습니다. 문제는 제 생각에 여러곳에서 동시에 DB의 한 테이블에 쓰려고 하니 당연히 Lock이 걸릴것이고 이것이 무시못할 정도의 performance저하를 가져 올것 같습니다.


그래서, 생각해 본것이 HEAP table을 parallel하게 돌고 있는 컴퓨터 수만큼 (즉, 100개)를 만듭니다. 그뒤 각각 parallel하게 돌고 있는 컴퓨터에서는 각각 자신에게 할당된 Table에 data를 씁니다. (자신에게 할당된 테이블에만 데이터를 쓰니 lock도 필요없고 parallel하게 쓸 수 있을것 같습니다.) 그 뒤 100여개의 HEAP table을 합쳐서 하나의 큰 Heap Table을 만듭니다. 


최종적으로 하나의 TABLE을 만들어야 하는 이유는 나중에 select해서 불러올때 weight에 따라 정렬되서 불러야 하기 때문입니다. 


제 질문은


(1) 위와 같이 HEAP을 100여개로 나눈뒤 나중에 하나로 합치는것이 원래 HEAP table이 하나 있고 그곳에 계속 data를 쓰는것보다 더 효율적일까요?


(2) 후자의 방법을 하더라도, 100여개의 HEAP table에 있는 data (data수 많습니다.)를 하나로 합칠때 꽤 시간이 걸릴것 같은데요. 어떨까요? postgresql db내부적으로 이것을 어떻게 처리할 지 몰라서 가늠할 수 가 없네요. 그리고 결정적으로 어떻게 (어떤 명령어로) 이것을 (100개의 table을 하나로 합치는것) 효율적으로 할 수 있을까요?

 

 만약 더 좋은 방법이 있다면 조언부탁드립니다. 


 감사합니다.

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

전통적으로는 그런 경우에 PostgreSQL 고유 기능인 테이블 inherits(상속) 기능을 이용합니다.


CREATE TABLE parent_heap (.....);

CREATE TABLE child_heap0001 () inherits (parent_heap);

CREATE TABLE child_heap0002 () inherits (parent_heap);

.....

CREATE TABLE child_heap9999 () inherits (parent_heap);


이런식으로 만들고, 종속된 테이블 모두 조회를 해야할 경우에는

SELECT * from parent_heap ... ;

형태로 조회합니다.


테이블 상속 관련에 대한 자세한 이야기는 사용설명서와 이곳을 참조하시면 될 것 같네요.


문제는 테이블 상속 개념이 발상 자체는 참신했는데,

대용량 자료를 수용하기에는 꽤나 많은 문제점을 안고 있다고 여러 사람들이 생각하고,

그 문제점들을 속속 지적하자 요즘은 잘 안쓰는 기능 가운데 하나입니다.

호환성 문제도 있고 해서,

요즘은 그부분에 대해서 통계테이블과 원천데이터 테이블 - 데이터하우징 개념이죠 - 형태로 자료구조를 정리해서, 트리거나 배치프로그램으로 풀어가는 방식을 택하는 것이 일반적입니다.

김상기(ioseph)님이 2008-09-11 13:26에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7521일별자료의 주별자료 변환 함수 [1]
chunrima
2008-09-15
7007
7520libpq에서 쿼리 날리듯 function이나 pl/pgsql날리는 방법? [1]
ㅎㅎ
2008-09-13
6033
7518프로시저 검색 [1]
유닉스
2008-09-11
6204
7517parallel 하게 DB update시 문제점 [1]
디비
2008-09-10
6090
7516많은 수의 테이블 생성 [1]
디비
2008-09-10
6310
7515[Q] cygwin에서 window로 설치된 postgresql 접근방법
정진기
2008-09-09
6138
7514postgresql 에서 oracle 로 옴기는 방법 [1]
유닉스
2008-09-06
6415
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다