|
안녕하세요.
FIrebird2.1을 dbexpress를 가지고 DB 처리를 합니다.
TSQLConnection - TSQLDataSet - TDataSetProvider - TClientDataSet
로 연결하였고, TSQLDataSet의 CommandType은 ctTable로 하였습니다.
Table이 ID, VALUE_A, VALUE_B 3개의 필드와 36,000 의 레코드로 이루어졌습니다.
일련의 처리를 통해 나온 결과를 DB에 업데이트 하기 위해 다음과 같은 함수를 사용했습니다.
WriteDB 함수가 한 1000번 호출하고 그 후 UpdateDB를 호출해서 DB갱신을 합니다.
이 과정에서 WrtieDB 호출 1000번에 3초 정도, UpdateDB에 12~13초 정도가 소모됩니다.
DB를 안 써봐서 그러는데 이 정도 성능이 맞는 것인지요?
제 방법이 잘 못 되었는지요?
개선방법을 알려주시면 감사하겠습니다. ^^;
DB를 구동하는 컴사양은 코어2듀어 1.86, 2GB입니다.
bool TMyDM::WriteDB(AnsiString id, AnsiString valueA, AnsiString valueB)
{
TLocateOptions Opt;
Opt = Opt << loCaseInsensitive;
bool result;
result = ClientDataSet->Locate("ID", id, Opt);
if (result)
{
ClientDataSet->Edit();
ClientDataSet->FieldValues["VALUE_A"] = valueA;
ClientDataSet->FieldValues["VALUE_B"] = valueB;
ClientDataSet->Post();
return true;
}
return false;
}
bool TMyDM::UpdateDB(void)
{
ClientDataSet->ApplyUpdates(-1);
}
|