Q&A

  • InterBase 접속 문제입니다.
현재 InterBase 를 사용하여 본사에 DB를 두고
협력업체에서 그 DB에 TCP/IP로 접속하여 사용하는
물류 프로그램을 제작하고 잇읍니다.

본사 네트워크는 MY IP를 두개 들여와서,
한개 IP는 서버에서 쓰고, 한개 IP는 인터넷 공유기를
이용해서, 다른 PC들에 내부 네트워크 및 인터넷 연결에
이용하고 잇읍니다.

테스트를 지방에 잇는 협력업체에서 할수 없어서, 서버에
회사 내부 네트워크망을 죽이고 IP만 연결한 상태로
다른 PC에서 서버에 TCP/IP로 접속하는 방식으로  개발을 해
왓는데여, 그래서 다른 거리가 먼 지역에서 접속해도
문제가 없을꺼라고 생각했는데 그게 아니엇읍니다.

Transaction 을 Commit후
Table을 오픈하는 부분에서 엄청난 렉이 걸리더군여.
Table 10개정도 여는데, 30초 정도 소요 됩니다. ㅠ.ㅠ

Table 오픈하는 부분의 소스 입니다.

  if MainForm.IBTransaction1.InTransaction then
  begin
    try
      MainForm.IBTransaction1.Commit;
      MainForm.IBTransaction1.StartTransaction;

      MainForm.ibtCustomer.Active := True;
      MainForm.IBDataSet.Active := True;
      MainForm.ibtCarGubun.Active := True;
      MainForm.ibtItemGubun.Active := True;
      MainForm.ibtPriceGubun.Active := True;
      MainForm.ibtItem.Active := True;
      MainForm.ibtPrice.Active := True;
      MainForm.ibtArrive.Active := True;
      MainForm.ibtStock.Active := True;
      MainForm.ibtJaego.Active := True;
    except
      ShowMessage('자료를 저장하는데 실패했습니다');
      MainForm.IBTransaction1.Rollback;
    end;
  end else
    ShowMessage('트랜잭션 모드가 아닙니다. 관리자에게 문의하세요');

보시는거와 같이 IBTable을 사용했읍니다.

제가 자료를 찻아본 바로는 대부분의 경우 IBDataSet을 사용하여
Open할때 필요한 부분만 짤라서 서버에서 가져오는 방식을 많이 사용한다고
하더군여.

그렇게 하더라도 실제 사용할때, 하루치 입출고 자료만 Grid에 뿌려준다고해도
몇천개의 레코드를 불러와야 할텐데여, 위에 테스트 할때는 기본적인 테스트 자료로
한개의 Table당 열개 안팍의 자료밖에 없는 상태였읍니다.

어떻게 해야 될까여? ㅠ.ㅜ 많은 조언 부탁드립니다.
1  COMMENTS
  • Profile
    이태환 2003.09.30 09:50
    안녕하세요.. 10개의 테이블을 연다고 하셨는데...
    IB 가 빠르다고하지만 좀 무리가.. SQL 문을 적절히 사용하셔서 해보시구여
    일단 MYIP 라고해도 같은 게이트웨이 그룹안에서는 어느정도 속도가 나오지만 타지역의 다른 게이트웨이 존에서는 여러 경로의 라우터를 거쳐나가기땜시 아무래두 렉이 걸리는것은 존재하지요.. MYIP 라고해도 업체에서 공유회선을 사용하여 상.하향 속도가 다르고 조금 무리가 가는면이 있습니다.
    저두 외부에서 집에있는 컴터의 오라클, MYSQL, IB 등 클라이언트 접속하여 열려면 렉이 심하게 걸리더군요
    상용으로 서비스를 제공하여면 아무래도 전용회선을 사용하는게 좋을것 같습니다. IDC 센터를 이용하시는방법두 방법이구요(어차피 회사돈이니깐.. ㅎㅎ)