当前位置:编程学习 > Delphi >>

delphi编写 c/s 3层结构,求高手解答。

思路上出现问题:
在客户A连接服务器访问数据,服务器建立子线程B。(B:动态建立ADOconnection 和ADOquery组件访问,据说这样安全)

现在B通过ADO动态组件访问数据库,但随着客户访问命令的增加,B的数量也增加。

结果就是数据库连接数猛增,数据库查询速度变慢。

有没有解决思路?

是用几个固定的ADOconnection ,还是 动态的ADOconnection?

追问:

构造一个线程安全的查询结构队列,是不是指是用 动态建立ADOconnection 和ADOquery一组组件?

貌似用线程池?这样的话,还是不停的建立、断开数据库连接,还是造成麻烦。能不能用一个固定的连接,然后用线程池来动态建立访问组件,连接固定的连接,而不必新建数据库连接?

 

答案:

构造一个线程安全的查询结构队列C,A连接后,将其查询请求及连接的socket句柄压入C中

程序启动时就先创建固定数量(以数据库允许同时连接的数量为准)的线程,在线程内部不停地从C取出查询结构,一旦取出可用结构,马上调用ADO动态组件查询数据库,并根据程序逻辑需要向查询结构对应的socket发回结果,完成后继续从C取查询请求。

 

 

上一个:delphi SQL INSERT INTO问题!求老手,给高分!
下一个:怎样把delphi源代码翻译成可执行文件或程序?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,