C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[67803] Re:[질문] 많은 양의 Row Insert할 때 속도 향상 문제..
JBMEX [edchang] 1790 읽음    2012-07-24 10:20
for loop 로 인서트 일일이 실행하면 비용이 많이 들지 않는가요?

INSERT INTO `테이블` (필드1, 필드2) VALUES ('값1', '값2'),('값1', '값2')...('값1', '값2');
주변에 보니 이런식으로 쿼리 만들어서 한방에 날리라고 말을 하는군요.

mysql 설정 ini 파일에 bulk_insert_buffer_size가 적절하게 설정되어 있는지 확인해야 할것 같은데
기본값은 8388608 (8M) 이라고 하네요. 성능을 위해서 뭔가 조정할 필요가 있어보입니다.

그외에 만약 autocommit 같은 설정값이 존재한다면 false 로 설정하고 마지막에 commit 을 한방에 때려야
속도에 도움이 좀 될 것 같은데요. 해보지 않아서 어떻게 하는지는 모르겠습니다.

http://dev.mysql.com/doc/refman/5.1/en/insert-speed.html



땅주인 님이 쓰신 글 :
: DB : MySQL 5.0
: DB Component: DBExpress
:
: 한꺼번에 넣어야 할 Row가 1000~2000건 정도가 되는데요..
: 통신으로 받은 Raw 데이터(1초당 발생하는 데이터)를 몇 분 정도의 데이터를 한꺼번에 넣어야 하는 상황입니다.
:
: For 루프 돌면서 insert 문장으로 넣으니 시간이 많이 걸리네요.
:
: Row 데이터를 한꺼번에 넣을 수 있는 방법이 있는 지요?
:
: ADO에서
:
: Query->InsertRow();
: ... // 해당 Row에 데이터 넣기
: Query->Post();
:
: 이런 형태로 했던 것 같은데..
:
: DBExpress에서도 이런 형식을 지원하는 지 알고 싶습니다.
: Help에 뒤져봐도 잘 안보여서...
:
: 감사합니다.

+ -

관련 글 리스트
67802 [질문] 많은 양의 Row Insert할 때 속도 향상 문제.. 땅주인 1226 2012/07/24
67803     Re:[질문] 많은 양의 Row Insert할 때 속도 향상 문제.. JBMEX 1790 2012/07/24
67805         감사합니다.(냉무) 땅주인 1190 2012/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.