Q&A

  • DB Data입력시 속도 개선문젭니다......잉잉....
고수 할아버지, 할머님들 안녕하십니까?

클라이언트 DB는 MS Access, 서버 DB는 Oracle8입니다. 각 DB는 Table컴포넌트에 물려 있습니다. MS Access에 있는것을 Oracle DB로 넘길 때, Table2.Fields.FieldByName('필드이름').AsString := '입력 값'의 형식으로 넘기는 데, 속도가, 서버 쪽의 5000개의 레코드가 저장되어 있어도 정말 돌아버릴 정도로 느립니다. 속도를 개선 시킬 수 있는 방법이 있으면 한 수 갈켜 주시와요.

2  COMMENTS
  • Profile
    Effenys 2000.01.29 03:31
    하늘 wrote:

    > 고수 할아버지, 할머님들 안녕하십니까?

    > 클라이언트 DB는 MS Access, 서버 DB는 Oracle8입니다. 각 DB는 Table컴포넌트에 물려 있습니다. MS Access에 있는것을 Oracle DB로 넘길 때, Table2.Fields.FieldByName('필드이름').AsString := '입력 값'의 형식으로 넘기는 데, 속도가, 서버 쪽의 5000개의 레코드가 저장되어 있어도 정말 돌아버릴 정도로 느립니다. 속도를 개선 시킬 수 있는 방법이 있으면 한 수 갈켜 주시와요.



    BatchMove 컴포넌트를 이용해 보세요!!~~

  • Profile
    하얀까마귀 2000.01.29 23:59
    Effenys wrote:

    > 하늘 wrote:

    > > 고수 할아버지, 할머님들 안녕하십니까?

    > > 클라이언트 DB는 MS Access, 서버 DB는 Oracle8입니다. 각 DB는 Table컴포넌트에 물려 있습니다. MS Access에 있는것을 Oracle DB로 넘길 때, Table2.Fields.FieldByName('필드이름').AsString := '입력 값'의 형식으로 넘기는 데, 속도가, 서버 쪽의 5000개의 레코드가 저장되어 있어도 정말 돌아버릴 정도로 느립니다. 속도를 개선 시킬 수 있는 방법이 있으면 한 수 갈켜 주시와요.

    >

    > BatchMove 컴포넌트를 이용해 보세요!!~~



    이건 튜닝에 가까운 문제인것 같은데.... 문제를 제대로 풀지 모르겠네요...

    우선 서버가 그렇게 느리진 않죠?? 원래 서버가 느려서 그렇다면 어쩔수 없고요...

    그리고 어디서 느려지는지를 우선 알아내세요..

    그러니까 서버가 느린 것인지... 아니면 네트웍에서 걸리는 것인지...등등...





    위의 말씀대로 배치무브를 사용해도 조금 빨라지는 걸 느낄수 있으실 겁니다.

    아!! 예전에 이걸 NT에서돌리니까 에러가 생기더군요...? 5.0은 모르겠지만..



    그리고.. 서버쪽에서 작업을 하실수 있으시면 방법이 몇가지 더 있습니다.

    우선 인덱스를 날려 버리세요... 당연히 인덱스가 있으면 그 인덱스를 생성할려구

    더 많은 프로세스가 걸리게 되죠...

    아예 프라이머리 키 까지 날리면 더 좋죠...

    그렇게 한 다음.. 작업을 끝내고 다시 만들면 되겠죠???



    그리고 템프 테이블을 만들어서 올리고 그걸 쿼리등으로 한방에 넣어버리는 것도 괜찮죠.

    제경험으로 보통 코딩으로는 아주 그렇게 탁월한 효과를 보기 힘들겁니다. 어차피

    비슷한 방식들이니까...



    제가했던 가장 빠른 방식은 아무래도 템프 테이블 같은걸 만들어서 데이타펌프라는 유틸리티를 이용해서 (이건 델파이에 들어있어요) 데이타를 올려요.. 몽땅..

    그런 다음에 서버에서 작업하는 거죠...

    물론 서버에 부하는 걸리지만.. 늦은 시간에 작업이 되도록 조정하면 그런대로 성능을 보이더라구요... 두개의 테이블 다 서버에 있으니까..

    그럼 즐거운시간 되세요.