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 10119 게시물 읽기
No. 10119
대용량 파일을 insert하려는데 효율적인 방법인지 고견 부탁 드립니다.
작성자
신입생
작성일
2019-12-12 16:29
조회수
565

 1. 문제 정의 

    1)  90000(가로)*40000(세로) 요소 존재. 각 요소는 real type value를 하나 가짐.

    2) 삽입 될 데이터는 서비스에서 UPDATE/DELETE 가 이루어지지 않음. 

    3) 서비스에서는 point search을 하여 데이터 사용 

2. 데이터 삽입 프로세스 

    1)(방법 #1) 테이블 구조를 (id:p-key, value)로 구성 후 삽입. 여기서 id는 "세로 idx"*sizeof(가로)+ 가로 idx.

       - Hash Partitioning 적용(39). 여기서 39는 각 파티션 테이블당 1억개 미만으로 유지하기 위해 설정된 값임
       (방법 1 결과)
       - 3억 5천 건 데이터 (10%) 삽입 후 총 테이블 사이즈는 24G(index size: 12G)
       - 각 파티션 테이블 사이즈는 642 MB(index size:329MB)

        (방법 1 생각)
       - 10% 삽입했는데....100%면 선형적으로 240G 용량이 필요. 데이터 저장이 효율적이지 않다고 판단
          이에, 다른 방법을 강구 하고 있습니다. 그 방법이 방법 2입니다. 

       - 그전에 방법 1을 하면서 다음과 같은 질문이 있어요.
         1) dead tuple이 없었는데... 혹 vacuum full;을 하니 각 파이션 테이블 사이즈가 확 줄었습니다. 
              642MB --> 476MB. 특히... index size가 확 줄었습니다. 어떤 이유인지 아시나요?
         2) 3억 5천 데이터 삽입 시, index size와 pg_relation_size가 329MB와 313MB였습니다. 
             7억 건 입력 시, 각각 크기가 선형적으로 2배씩 증가하나요? 아니면 비선형(logscale, qudratic?)으로 증가하나요?

     2) (방법 #2) 테이블 파티션 없이 Single 테이블 사용. 테이블 구조를 (id(세로 idx): p-key, array) 형성.
                         서비스 application에서 index를 사용 90000개의 요소를 가진 array 추출 후 탐색하여 특정 데이터 사용
 

방법#2를 실행하기 전, 타당성을 좀 문의하고자 합니다. 이외, 다른 효율적인 프로세스가 있나요?
전문가 분들의 자문 부탁 드립니다. 

        

     

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

1.

vacuum full 이야기는 PostgreSQL의 자료 처리 방식에 대한 이해가 먼저 있어야 이해 할 수 있습니다.

인터넷에 찾으면 참 많이 있습니다. 열심히 공부하세요.

 

2.

insert only 테이블의 크기 증가는 선형적입니다.

 

3.

방법 #2 이야기는 뭘 꿈꾸는지 몰라서 답변을 못드리겠네요. (제가 난독증이 있어서)

김상기(ioseph)님이 2019-12-13 21:30에 작성한 댓글입니다.

^^;; 어설픈 질문에도 답변을 주셔서 감사합니다. 

강형민(hmkkang0922)님이 2019-12-19 16:16에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10122잡답 - 과거에 postgresql 을 오픈DB로 사용하지 않았던 이유 [2]
lucky
2019-12-24
686
10121csv파일 import 시 timestamp의 초단위가 00으로 나옵니다. [1]
rla01234
2019-12-19
474
10120view에서 sequence 사용관련 [2]
정상규
2019-12-13
515
10119대용량 파일을 insert하려는데 효율적인 방법인지 고견 부탁 드립니다. [2]
신입생
2019-12-12
565
10118view 생성시 view컬럼의 이름과 데이터타입 크기 설정하는방법 [1]
성스
2019-12-10
450
10117PGDay.Seoul 2019 광고 [1]
김상기
2019-12-03
550
10116wal sender, receiver process idle [2]
뿔보
2019-11-27
583
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다