현재 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당 열개 안팍의 자료밖에 없는 상태였읍니다.
어떻게 해야 될까여? ㅠ.ㅜ 많은 조언 부탁드립니다.
|