안녕하세요.
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;
} |