갈수록..점점..미안해서 ㅡ.ㅡ;;
데이타서버문제라고 하셨는데요..데이타서버는..그냥..암껏도없고..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서버를...어떻게 설정을 하란뜻인지...
제가 알고 있는 바로는 ADO든 머든간에 쿼리 컴포넌트는 한번에 하나의 쿼리만을 수행할 수 있도록 되어 있습니다.
소켓서버에서 데이터서버로 여러개의 쿼리문을 한번에 보내더라도 시간차이는 거의 없지만 데이터서버에서 그 쿼리문을 상당한 시간이 걸릴수가 있습니다. 빨리 처리한다고 하더라도 한번에 하나씩만 처리하기 때문에 이전 쿼리문의 실행이 끝날때까지 나머지 쿼리문들은 기다릴수밖에 없는거죠...
쓰레드를 쓰든 멀 쓰든 상관은 없겠지만 그 실행은 분할해야 할 필요가 있겠죠. 그래서 풀링개념을 말씀드리는 것이구요...
쿼리를 실행하는 객체를 충분히 미리 만들어 놓으시구 질의가 들어오면 이것들 중에서 놀고 있는 객체에 그 쿼리문을 넘겨서 실행하도록 하시면 한번에 여러개의 쿼리문이 소켓으로 전송되어 오더라도 동시에 실행할수가 있는것입니다.
어느정도 한계가 있겠지만 쿼리문 자체도 빠르게 처리될수 있도록 옵티마이징해주는것도 좋겠죠...
^^ 항상 즐코하세요...