Q&A

  • 혹시 Database Desktop 땜에 속도가 빨라지는 이유 아시는 분
급해서 올린건 아니구요.

회사에서 만든 프로그램의 속도 개선을 위해 이것 저것 테스트 하다 이상한 것을 봐서 혹시 아시는 분이 계시면 한수 배울까 해서 올립니다.

제가 만든 프로그램중에 A, B, C 라는 DB가 있는데 B,C DB 각각의 한 필드의 내용을 A DB의 특정 필드에 Update 시키는 부분이 있읍니다.
A DB 에 120,000 개 이상,  B, C 에는 각각 60,000 개 이상의 레코드가 있읍니다.
물론 3개 DB에 필요한 Index는 다 잡아 놨구요 DB 모두 제 PC에 저장되어 있고 작업도 제 PC에서 합니다.   DB는 Paradox DB 입니다.

이를 Update 실행하면 약 50분 정도의 시간이 소요 됩니다.
첨엔 급한대로 사용하다 너무 시간이 걸려 지금에 와서 속도 개선을 위해 sql문도 바꿔보고 하다 어느 순간엔가 UPdate 속도가 2배 이상되면서 시간은 약 25분 정도 밖에 안 걸리니는데 다음에 다시 실행하니까 다시 원래의 속도가 나오더라구요.

첨에 원인을 모르다가 Delphi에 포함된 Database Desktop에서 A DB를 불러온 상태에서 Update를 한 것 같아 다시 그대로 해보니 정말 2배의 속도가 나옵니다.
그리고 Database Desktop을 닫거나 Database Desktop에서 A DB를 닫으면 원래의 속도가 나옵니다.
만약 Database Desktop에서 사용하는 방식을 프로그램에 적용한다면 지금 하는 작업시간이 절반으로 줄어들것 같은데.....

혹시 Database Desktop에서 A DB를 열고 작업을 했을 때 속도가 빨라지는 이유와 Database Desktop에서 사용하는 방식으로 프로그래밍을 할 수 있는지요.
알고 계신분은 꼭 답변 부탁드립니다.

참고로 저는 sql로 update 작업을 했고요 DB 관련 컴포넌트는 TQuery만 사용하였읍니다.


그럼 2000...
1  COMMENTS
  • Profile
    김지엽 2002.05.18 10:47
    전적으로 로컬DB이기 때문에 빚어지는 현상이라고 보여집니다.
    로컬 DB에는 자체적인 DB엔진이 없습니다. 그 역할을 대신해주는 것이 BDE이고, 아마도 Database DeskTop도 그것을 이용할 것입니다.

    이것이 차이의 원인일 듯 하네요.

    DataBase Desktop은 로컬 DB에 대해서 일종의 DB 엔진 역할을 해주고, 자체적으로 델타파일과 그 델파타일을 이용한 인덱싱 효과를 내 주는 걸 겁니다.

    (정확히 알고 하는 이야기는 아니고, 제가 아는 지식들을 조합해서 추측해보는 겁니다.)

    만약 동일한 효과를 원하신다면, 자체적으로 이런 인덱싱을 사용할 수 있도록 하면 되지 않을까 싶은데요.

    TDatabase와 TSession을 적절하게 사용하시면 비슷한 효과를 보게 되지 않을까 싶네요.