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 6498 게시물 읽기
No. 6498
Insert / Update / Delete 속도에 관한 질문입니다. ㅜㅡ
작성자
강승준
작성일
2006-01-05 14:37
조회수
3,465

일단 참고로 리눅스는 초짜임을 먼저 말씀드리고 질문드릴께요

현재 vb로 Postgresql을 사용하여 작업을 하던 도중 생긴 문제인데요..

질문의 요지는 현재 한개 서버에 1번~50번까지의 디비를 생성하여 사용중이고요.

각 DB당 월 1번의 중요 자료를 평균적으로 1~2천개정도를 한번에 insert하며 insert 한 자료를

2~10번정도 Update쿼리를 날림니다..

헌데 여기서 insert와 Update 속도가 너무 안나와서요

저장은 비베에서 그리드를 이용해 일단 데이터를 펼쳐놓고 맨 앞코드에 추가인지

수정인지 삭제인지 구분코드를 넣은 뒤 비교하여 해당쿼리를 날리는 방식인데 2천개라면 ㅜㅡ 해서 여기저기 뒤적거려 프로시져를 생성하여 데이터만 넘겨서 처리하는 방법으로 했는데요.

A라는 작업은 그럭저럭 처리가 되었는데 B라는 작업은 각필드수가 약 80~90개정도인데.. 겨우겨우 이것저것뒤져 만들어 날리니 ㅡㅡㅋ 버젼이 낮아 16갠가 이상의 인수는 날릴수가 없다라는 ㅜㅡ

 

두서없이 혼자 흥분해서 적다보니 글이 영 복잡한데요

정리하자면 1~2천건의 데이터 insert / update를 어케 해야될지.. 최소 1~2분내에는,,,, ㅜㅜ

현재 작업데이터를 10개씩모아 PD로 날려 처리하고 있는데 20이상모아 날리면 오류 발생..

파일로 날려 처리하려면 좀 죄송스럽지만 어떻게 처리를 해야되는지 좀 구체적으로 예를 들어주시면 무지 감사하고요.

 

참, 초보가 보기 좋은 책(psql) 좀 권해주세욤 (^^ 웬만하면 우리나라 말루 된거루다가 ). 공부는 해야겠는데 어떻게 시작을 해야될지도 막막하고 이럴줄알았으면 리눅스 공부도 좀해두는 건데 ㅜㅡ 눈에 편한 MS계열만 보다보니 ㅜㅡ 답변 절실히 부탁드립니다. (_ _)

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

인수문제는 버젼을 올리던지 처리방법을 바꿔야겟구요.

 

기존데이타가 얼마나 많은양인지 index를 얼마나 가지고 있는지에따라 차이가 있겟지만 1~2천개라면 1분내에 끝내야할양이죠.

 

일괄처리를 하려면 insert보다는 copy를 쓰는것이 현격하게 빠름니다.

copy사용법은 document를 일단 보십시요.

[현재 작업데이터를 10개씩모아 PD로 날려 처리하고 있는데 20이상모아 ] 이 부분은 매크로로 처리하는거 같은데 전처리기능(prepare)을 쓰시는게 더 낳아보이구요.

 

update는 insert후에만 가능한것이 아니라면 update후 insert(copy)를 하시는게 더 좋겟네요.

 

한서버에 1~50개의 디비라고 하셧는데 디비가 아니고 테이블 말씀하시는거겟죠? 음 이런류의 테이블 스키마는 관계형DB에서 좀 문제가 있어보이네요. 필드수가 80~90개라고 하신것과 함께 유추해보면 스키마 설계가 혹 막설계가 된건 아닌지....

 

1~50개의 테이블은 분류필드를 추가해서 하나로 묶던지 postgres의 상속기능을 활용할 수 도있어 보이거든요.

가우님이 2006-01-06 11:25에 작성한 댓글입니다. Edit

음.. 뭐가 좀 심하게 느린 것 같은데요.

저는 raid 없는 일반 PC 서버에서 5분에 3만개 정도 입력을 하는데... 1분에 6-7천개 정도 들어가더군요.

 

copy를 쓰는 것이 가장 빠른 방법이지만 여러 제한 사항이 있기 때문에 만약 insert를 써야 한다면 autocommit을 하지 말고 하나의 트렌젝션 안에서 처리를 해보도록 하십시오.

 

그리고 가우님 말씀 처럼 인덱스가 많이 영향을 미칩니다. pgsql은 index의 갱신이 좀 느린편입니다. 필요 없는 인덱스는 가능하면 만들지 않는 것이 좋겠죠. 그리고 포린키와 트리거도 속도를 느리게 만드는 원인이 됩니다. 필요 없는 제약사항은 제거해 주시는 것이 좋겠죠.

박성철(gyumee)님이 2006-01-06 22:43에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6505엑세스에 ODBC로 테이블 링크할때? [1]
dba
2006-01-12
2320
6503\d tables 해서 나오는 결과에 대해.. [1]
왕초보
2006-01-12
2258
6501insert나 update쿼리에 영향을 받은 칼럼수를 알수 있을까요? [4]
한승전
2006-01-10
2542
6498Insert / Update / Delete 속도에 관한 질문입니다. ㅜㅡ [2]
강승준
2006-01-05
3465
6497[질문]libpq Linker Error [2]
초보
2006-01-05
3303
6495레코드 셋에서 serial type의 필드를 읽는데 에러가.... [1]
조우현
2006-01-03
2332
6493tomcat 4.1.31 + postgresql 8.1 + jdbc + JSP 한글깨짐 [1]
김성식
2005-12-30
5180
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다