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
운영게시판
최근게시물
MySQL Q&A 29701 게시물 읽기
No. 29701
Insert문 속도개선
작성자
김현철(xion34)
작성일
2010-06-14 10:58
조회수
8,391

안녕하세요.

2기가 정도의 데이터를 순차적으로 읽어서 insert문으로 DB에 입력하고 있는데요,

컬럼의 개수는 158개 정도고, 앞에 8개의 컬럼을 제외하고 컬럼은 각 1바이트 데이터가 저장됩니다.

2기가 정도면 레코드수가 수천만개까지 되는데, 속도가 너무 느립니다.

4메가 입력에 약 4분정도 걸리네요. (로컬서버에서)

아래처럼 한개의 레코드값을 insert문을 만들어서 DB로 하나씩 날리고 있습니다.

지금은 다른 구현 부분이 급해서 일단 DB에 값넣어놓고 하는데, 나중에는 데이터 집어 넣는 부분이 분명문제가 될것같네요.

DB에 대해서 지식이 거의 없는 지라 개선할 수 있는 조언 좀 부탁드립니다.

private string _getSQLString(Byte[] buffer)
        {
            int _blockNo = buffer[3];
            _blockNo |= (buffer[2] << 8);
            _blockNo |= (buffer[1] << 16);
            _blockNo |= (buffer[0] << 24);

            int _rcd= buffer[7];
            _rcd|= (buffer[6] << 8);
            _rcd|= (buffer[5] << 16);
            _rcd|= (buffer[4] << 24);

            string SQL = "insert into `" + parent.GetProjectInfo().ManageNo + "` (block, record";
            for (int i = 1; i <= 150; i++)
                SQL += ",r" + i + " ";
            SQL += ") values (" + _blockNo + "," + _rcd+ ", ";
            for (int i = 8; i < 158; i++)
                SQL += buffer[i] + (i >= (158 - 1) ? "" : ", ");
            SQL += ")";
            return SQL;
        }

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

데이터를 먼저 생성하시고, LOADDATA 구문으로 넣어보셔요.

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

신동진(arimas)님이 2010-06-14 11:38에 작성한 댓글입니다.

 

 

혹시 Innodb 엔진 사용중이신지요?

innodb_flush_log_at_trx_commit = 0  으로 설정 해보시기 바랍니다.

로그를 쓰지 않고 기록하기 때문에 속도가 빨라질수 있습니다.

 

정전과 같은 상황에서 데이터 손실을 감내 하실수 있으시면 시도해보시기 바랍니다.

민족님이 2010-06-16 14:33에 작성한 댓글입니다. Edit

소스가 보니 한번에 한라인씩 입력되는거 같네요.

넣을 수 있을 만큼 한번에 많이 넣으면 속도에 좀 유리합니다.

insert into db (field, field) values

(data1, data2),

(data1, data2),

....

(data1, data2),

(data1, data2);

한번에 쿼리를 날릴 수 있는 용량도 있으니 조절해가면서 해보세요.

김원일(quenya)님이 2010-06-25 13:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29704어플 설치본 생성시 DB를 포함하려면? [3]
생이
2010-06-16
7150
29703리플리케이션 질문입니다. [4]
곽승훈
2010-06-16
7047
29702안녕하세요 초보가 질문드립니다. [1]
투루로맨스
2010-06-15
7679
29701Insert문 속도개선 [3]
김현철
2010-06-14
8391
29700테이블 생성에 대한 질문입니다... [2]
윤은숙
2010-06-14
6895
29699mysql 연결유지현상에 관련 질문입니다.
헬프요
2010-06-11
7252
29698select 구문에 +는 안되나요? [2]
김갑열
2010-06-10
7349
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다