MIDAS做的程序连接太慢(2分钟),请帮忙

tlc97 2001-03-07 08:40:00
bcb5.0做了个数据库程序,由于客户端机子种类太多,我做成三层结构,唯一的目的是免
去配置bde和装数据库客户端,但现在的问题是客户连接数据库时取一20000条记录的表竟然花去2分钟,这样的速度让人难以忍受,各位有什么办法提高速度?
数据库:sql server7.0/win98
程序服务器采用单线程模式,用tcp/ip连接(有win95,无法用dcom)
...全文
282 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfone 2001-03-09
  • 打赏
  • 举报
回复
你为什么不用POOLER呢?效果很明显的。

如果你是用DCOM要慢一点。但是用SOCKET可能好一点。

还有我测试过。如果你不用三层。通过直连也要1:30多哟。
tlc97 2001-03-09
  • 打赏
  • 举报
回复
我对delphi社区的热情很感动,虽然我提了个很不清楚的问题,我不是专职的程序员
所以请大家理解
我做的是一个客户资料管理系统,我在售后服务部,以前请大的软件公司做过,也许
他们对业务流程不清,项目很大,却比手工方式更复杂,所以公司决定自己做
由于整个业务流程我很熟悉,加上只有两人写程序,我们只是作了些基本的约定,没写
系统分析
老总给一月时间,包括完成资料的整理,另外两人负责录资料,其间还得负责正常工作
第一步只想把手工作业全转为网络办公,完善留到后面做
现只要做到以下几点:
1.新增客户管理(客户资料,交易情况等)
2.服务管理(发生问题,服务情况,客户意见等)
3.业务情况管理信息(提供各部门领导,市场情况,业务人员考评等)
4.客户资料提供合作公司共享





why_wf 2001-03-09
  • 打赏
  • 举报
回复
你的系统分析没有做好,建议你把想实现的功能讲出来,大家给你分析。
shadow007 2001-03-09
  • 打赏
  • 举报
回复
我建议把你要解决的问题摆出来,大家给你设计个好点的结构
tlc97 2001-03-09
  • 打赏
  • 举报
回复
很多文本资料要录入计算机,有些字段有规律已经计算进去,录入时只补空的字段
例如有order_id,name两字段,name为空,我每次连接时取回空的记录,顺序录入
数据以实际的物理资料排序,主要是考虑整理资料时少用查询
第一次的错误是用了ADOTable连接,实际证明他的速度很慢,还是bde最快
我的确做了个很糟的三层结构,以后会有经验吧,唯一的好处是本来好多破机
子现也可用了,换一台服务器所有的速度都会提高了

现经过全面测试,时间花费最大的是应用程序服务启动,不连接任何数据库,要23-25秒
连接数据库取20000条记录3秒,数据打包传到客户端11秒
如果用ADOTable在程序服务器,要花8-9秒才能返回数据
还有,一不小心用了single模式,还能改么?
TechnoFantasy 2001-03-08
  • 打赏
  • 举报
回复
TINA正确,如果象你这样的话不要用三层结构结构了。分批取记录,查询动作都在服务器
端执行,然后将执行的结果传到客户端。
TINA 2001-03-08
  • 打赏
  • 举报
回复
真是吐血,你这样一开始无端就取20000条纪录,就算不是3层,速度也会让人无法忍受。
首先你的做法就不对,我想不出什么程序非要取20000条纪录到客户端,如果真要浏览,可以采用分批取,如果是为了生成报表,拜托,先把数据在服务器端处理,然后把需要的数据返回到客户端。

你这样做,就算再好得结构,都要被你用的乱七八糟。
还是注意自己的方法吧,不要埋怨三层结构不好了。好好去学学三层结构,不要一点都不会,只会简单的连接远程数据就算会用,建议去买李维的书看看,好好去学学,什么才叫三层结构,怎样去优化。
TINA 2001-03-08
  • 打赏
  • 举报
回复
真想不出还有什么理由一定要马上检索20000条纪录出来,你倒是说出一个原因来啦,我是想不出来了,我想大家也很难想出一个合理的理由要这么做。
请问你非要这么做的目的是什么,一下子取这么多要干嘛用吗,我想现在不是讨论速度的问题了,而是应该讨论如superyiman所说的,结构不行,所以现在改为讨论你的结构

superyiman 2001-03-08
  • 打赏
  • 举报
回复
结构不行,你还得多看书!
superyiman 2001-03-08
  • 打赏
  • 举报
回复
结构不行,你还得看挺多书
w102272 2001-03-08
  • 打赏
  • 举报
回复
那你就说说为什么一定要取20000记录到客户端?不用三层体系也受不了这个折腾的。
你算算20000记录假设每记录算半K,那也要1M。
就算从网上邻居复制1M文件,也要一段时间的。

要免去配置bde和装数据库客户端,也可以使用ADO。

但是无论怎么样,都没法达到你要求的响应速度。你的设计一定要改的。
tlc97 2001-03-08
  • 打赏
  • 举报
回复
我在服务器端取20000条记录要1秒,实际上我的确要一次取这么多记录,也许有更好的方法,望你们能讲清,工作和研究是有区别的,等我找到好的算法,可能不用做了,我现在只做个框架
通过后我会再优化
我真的对三层结构不清楚,但不是赶时髦,我的客户端无法用bde访问数据库,如有其它办法
请告知一二
多谢各位的指教
eDRIVE 2001-03-08
  • 打赏
  • 举报
回复
你应该每次只Fetch一部分,哪里有一次干掉“20000”条的?
数据库查询20000条的时间+网络传输20000条的时间=???
神奇的肚肚 2001-03-07
  • 打赏
  • 举报
回复
我看只有从线程模式上考虑了,
你可以在数据库端做几个存储过程来调用,这样传输的数据会少一些

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧