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 7537 게시물 읽기
No. 7537
insert & import 속도
작성자
박성식(mulgo79)
작성일
2008-10-08 19:15
조회수
7,211

현재 사용중인 시스템 사양은 Cent OS 5.2, CPU 4, Memory 4G이며,

PostgreSQL 8.3을 쓰고 있습니다. 많은 양의 데이터를 table에 빠른

시간안에 적재하기 위하여 psql에서 import하는 방식을 쓰고 있습니다만

원하는 만큼의 성능이 나오질 않아서 질문 드립니다.

현재 10000 row정도의 데이터를 테이블에 밀어넣는 방법은 파일을 이용하여

copy구문을 쓰고 있습니다. 보통 postgresql에서는 속도가 어느정도까지 나

오는지 우선 궁금합니다. 10000 row정도의 데이터가 들어있는 파일이 20개정도

존재한다고 하면, 5초내지 10초안에 전부 밀어넣는것이 가능할까요??

테이블에는 인덱스가 6개정도 잡혀있으며 검색속도를 고려하여 인덱스가 잡혀 있습니다.

아시는분 조언 부탁드립니다. 그럼 꾸벅 ㅠㅠ

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

성능관련문서를 보시면 copy 구문으로 빠른 insert를 하려면 index를 지워라고 권장합니다.


인덱스 삭제가 불가능하다면 이 점은 패스


mssql이면 statics io로 해서 io병목을 체크하는데 postgresql 도 explan 에서 가능한지 모르겠습니다 

^^;


일단 그 다음 확인 해보실것이 disk io입니다.


db의 가능 큰 성능을 차지하는 부분중 하나 이기 때문에 disk io도 체크해보시기 바랍니다.


10000 row면 copy로 하지 않아도 10초안에 들어갈텐데 흠..


인덱스 6개 만들어서 해봐야 하는가 ^6;


일단 disk io 체크 해보시기 바랍니다.

김병석(byung82)님이 2008-10-08 19:37에 작성한 댓글입니다.

우선 답변 감사합니다 ^^

음 ... 근데 인덱스는 검색 속도때문에 우선 삭제는 안될거 같구요...

10000 row가 10초안에는 물론 들어갑니다 ㅎㅎ

제가 바라는건 10000row가 들어있는파일이 20개 존재 하기때문에

각 thread에서 밀어넣는데.. 말하자면 10000row * 20이 되는 셈이죠

20만row가 되겠네요 한놈에서 밀어넣지 않고 20개 thread에서 밀어넣게

해놓았는데 10초안에 처리가 안되네요 우선 disk io를 한번 체크해보도록 하겠습니다. ^^

박성식님이 2008-10-08 23:00에 작성한 댓글입니다. Edit

흠...


insert 전에 index drop 하고 insert 후 index 생성은 어떨까여


큰 차이가 없을려나 ^^;


그리고 10000row 20개 파일을 일일히 copy로 하시지 마시고


한방에 하시기 바랍니다 ^^:


20개 파일을 열어서 데이터를 넣어주시기 바랍니다.


꼭 20개 thread로 해야 할 이유도 없기 때문에 ^^;


만약 C#을 좀 하신다면 C# Paraller Extention을 사용해서 병렬로 하시면 성능이 더 ^^:


그럼

김병석(byung82)님이 2008-10-09 01:51에 작성한 댓글입니다.

답변 감사 드립니다 ^^

index 드랍후 생성은 우선 불가능 할것 같구요...ㅠㅠ

리눅스에서 코딩을 해야 하기때문에 c#또 무리일듯 ^^::

20개 파일을 한방에 하라는 말씀이 파일을 하나로 merge한후에

한번의 copy 구문으로 처리하라는 말씀이신가요?

그렇게 한방에 처리하는것보다 병렬로 처리하는것이 더 빠른것이

아니었나보네요 음...

우선 지금은 postgresql.conf에서 좀더 손봐야 할것들이 있는지

보는중입니다. 아 ~~ 미치겠습니다 ㅎㅎ

박성식님이 2008-10-09 10:37에 작성한 댓글입니다. Edit

거의 13만row의 데이터를 copy구문으로 밀어 넣는데 30초가량 걸렸습니다.

물론 한개의 파일에서 처리를 했구요...

이정도 속도가 정상인가요? 아님 더 튜닝이 가능한가요?

박성식님이 2008-10-09 10:49에 작성한 댓글입니다. Edit

^^;


아직도 20초를 더 줄여야 하는군요 ㅎㅎ


일단


인덱스 없는 테이블 만들어서 20만 row copy로 넣어보시기 바랍니다.


그거랑 인덱스 있는거랑 시간 차이 한번 올려주세여 ^^;

김병석(byung82)님이 2008-10-09 13:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
75407.2 에서 8.3으로 데이타이전(large object문제)하려고합니다. [1]
서정주
2008-10-10
6049
7539AS 생략 안되나요? [1]
post
2008-10-10
6190
7538초보적인 질문입니다~ [2]
관식
2008-10-08
7022
7537insert & import 속도 [6]
박성식
2008-10-08
7211
7536[답변 감사합니다]Trigger관련 다시 정리해서 질문드립니다. [5]
김상희
2008-10-08
6668
7535trigger함수 관련 질문입니다. [2]
김상희
2008-10-08
6120
7534자바 rmi서버를 이용하는데 디비에 접근하지 못합니다.
김치원
2008-10-07
6309
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다