Q&A

  • 최용일님..답변감사합니다..죄송하지만..한가지만더~~
갈수록..점점..미안해서 ㅡ.ㅡ;;

데이타서버문제라고 하셨는데요..데이타서버는..그냥..암껏도없고..mssql서버만.설치되있거덩요....소켓서버에서...
idTCPServer의 onExecute 이벤트안에서

procedure TServerFrmMain.ServerExecute(AThread: TIdPeerThread);
var
  revstr, sendstr : string;
begin
  if not AThread.Terminated and AThread.Connection.Connected then
  begin
    revstr := AThread.Connection.Readln;
    memo1.lines.add(revstr);
=========요기부터==========
    이안에...ADO을 이용해서 넘어온 쿼리메세지로..쿼리하고..받은다음.
    받은.데이타를 다시..sendstr문자열에...붙여서....넘겨줍니다..
이부분을 따로..쓰레드로 만들어야돼는건지...아니면..쓰레드필요없이..그냥
요기다가..처리하면..돼는건지..그걸 물어본거거든여...
=========요기까지==========  
   AThread.Connection.Writeln(sendstr);
end;
아무래도..우문을 한거같은......죄송하지만..한번만더~~은총을 ^^;;

아니면..ms-sql서버를...어떻게 설정을 하란뜻인지...
1  COMMENTS
  • Profile
    최용일 2003.08.27 05:23
    안녕하세요. 최용일입니다.

    제가 알고 있는 바로는 ADO든 머든간에 쿼리 컴포넌트는 한번에 하나의 쿼리만을 수행할 수 있도록 되어 있습니다.

    소켓서버에서 데이터서버로 여러개의 쿼리문을 한번에 보내더라도 시간차이는 거의 없지만 데이터서버에서 그 쿼리문을 상당한 시간이 걸릴수가 있습니다. 빨리 처리한다고 하더라도 한번에 하나씩만 처리하기 때문에 이전 쿼리문의 실행이 끝날때까지 나머지 쿼리문들은 기다릴수밖에 없는거죠...

    쓰레드를 쓰든 멀 쓰든 상관은 없겠지만 그 실행은 분할해야 할 필요가 있겠죠. 그래서 풀링개념을 말씀드리는 것이구요...

    쿼리를 실행하는 객체를 충분히 미리 만들어 놓으시구 질의가 들어오면 이것들 중에서 놀고 있는 객체에 그 쿼리문을 넘겨서 실행하도록 하시면 한번에 여러개의 쿼리문이 소켓으로 전송되어 오더라도 동시에 실행할수가 있는것입니다.

    어느정도 한계가 있겠지만 쿼리문 자체도 빠르게 처리될수 있도록 옵티마이징해주는것도 좋겠죠...

    ^^ 항상 즐코하세요...