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
[53192] DB 처리방법 개선할 점을 알려주세요.
도와주세요 [] 1228 읽음    2008-04-21 11:00
안녕하세요.

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);
}

+ -

관련 글 리스트
53192 DB 처리방법 개선할 점을 알려주세요. 도와주세요 1228 2008/04/21
53236     Re:DB 처리방법 개선할 점을 알려주세요. 박지훈.임프 1784 2008/04/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.