Q&A

  • [Q] 수백만 건의 SQL Server 테이블 작업시 다운...
안녕하세요, 공대규라고 합니다.



환경 :

NT 4.0 SP5

SQL Server 7.0 SP 1

DELPHI 4.0



(질문 1)

리모트에 있는 SQL Server DB의 테이블에 수백만 건의 데이터가 등록되어 있고요,

그것을 로컬에 있는 프로그램에서 연결한 다음 작업을 하려고 합니다.

그런데 수 천 개까지 처리하다가 프로그램이 죽은 듯 해서 작업관리자에서 보면 제 프로그램이 "응답없음"으로 되어 있습니다.

그 데이터를 수 만 개 로컬 테이블에 복사해 와서 같은 프로그램을 돌리면 정상적으로 작업이 완료됩니다.



리모트로만 연결하면 몇 천 개만 처리하고 다운되는데 왜 그런지요?



소스는 다음과 같습니다.



while NOT ng_sum_aduriraw_tbl.EOF do

begin



uri_length := length(ng_sum_aduriraw_tblURIIDRAW.value);

if copy(ng_sum_aduriraw_tblURIIDRAW.value, 1, 6) <> '/event' then

not_event := TRUE

else

not_event := FALSE;



if ((uri_length > 0) and not_event) then // 데이터가 있고 event.ng 가 아니면 수행.

begin

cp_id := extract_cpid(ng_sum_aduriraw_tblURIIDRAW.value); // URI 정보에서 cp id 추출

if cp_id <> 'SKIP' then // cp id가 없는 경우 SKIP

begin

if (H_iIP_tbl.findkey([cp_id])) then

CUR_IPID := H_iIP_tblIPID.value

else

begin

H_iIP_tbl.append;

H_iIP_tblIP.value := cp_id;

H_iIP_tblDateAdded.value := ng_sum_aduriraw_tblSTARTDATE.value;

H_iIP_tbl.post;

end;



H_sIPs_tbl.append;

H_sIPs_tblsVisits.value := ng_sum_aduriraw_tblCLICKS.value;

H_sIPs_tblsRequests.value := ng_sum_aduriraw_tblIMPRESSIONS.value;

H_sIPs_tbl.post;

end;

end;

ng_sum_aduriraw_tbl.next;

end;



(질문 2)

그 테이블을 더블클릭하여 필드를 읽어 올 때 분명히 ID (자동 증가되어 입력되는 필드) 필드인데,

TAutoIncField로 선언이 안 되고 TIntegerField로 선언이 됩니다.

다른 테이블의 ID 필드는 TAutoIncField로 선언이 되는데 어떤 한 테이블이 그럽니다.

그래서 TAutoIncField로 고쳐서 프로그램 돌리면 타입이 안 맞다고 안 되고요...

어떻게 해결하면 될까요?



(질문 3)

TFloatField에 TIntegerField 값을 넣을 때 특별히 주의할 일이 있나요?

값이 1인 경우에는 똑바로 들어가는데 726 같은 세 자리는 똑바로 안 들어 가는 것 같습니다.

이유가 뭘까요?



(질문 4)

저는 지금 리모트 SQL Server Table을 TTable에 연결하여 작업하고 있습니다.

TTable의 Method를 써서요 이 방법보다 좋은 방법이 있는지요?



경험 있으신 분들의 조언 부탁 드립니다.



공대규 드림

0  COMMENTS