问题: 三层结构为何这么慢!有何方法加快一点? ( 积分: 200 )
分类: MIDAS / DCOM
来自: yifawu1, 时间: 2001-02-04 20:40:10, ID: 448787
三层太慢了!
我把 sql server 的 一个表加到 10000 条记录时,
打开表就用了20秒钟。
改了 packet 参数也是如此
来自: 笑傲江湖, 时间: 2001-02-04 20:47:01, ID: 448793
先在你的应用服务器上(两层)测试一下打开该表的时间,看看时间瓶径到底发生在那一步了.
来自: yifawu1, 时间: 2001-02-04 20:51:10, ID: 448794
两层打开时不到一秒
来自: yifawu1, 时间: 2001-02-04 20:55:06, ID: 448795
是否三层结构不适合于大的数据库.
我采用socket 连接方式。采用单机测试.
来自: 笑傲江湖, 时间: 2001-02-04 20:57:08, ID: 448797
应用服务器先启动了吗?
还是客户端运行时自激活的?
来自: yifawu1, 时间: 2001-02-04 21:01:28, ID: 448799
中间层基本上采用默认值。
来自: 笑傲江湖, 时间: 2001-02-04 21:04:56, ID: 448801
我的意思是,你有没有先把应用服务器启动起来,然后运行客户端程序.
而不是等客户端程序运行时自激活应用服务器.
来自: yifawu1, 时间: 2001-02-04 21:06:08, ID: 448803
两者试过没有什么区别
服务器并没有试先打开数据
客户端临时调用数据,上传SQL语句给服务器,再返回数据
来自: 笑傲江湖, 时间: 2001-02-04 21:13:25, ID: 448805
你的应用服务器上的DATABASE连接是什么时候干的?
来自: yifawu1, 时间: 2001-02-04 21:16:50, ID: 448810
采用ADOconction,没有用到BDE,也没有采用 database 组件.
来自: 笑傲江湖, 时间: 2001-02-04 21:24:27, ID: 448816
你的应用服务器上的ADOconction连接是什么时候干的?
来自: 左轻侯, 时间: 2001-02-04 21:26:24, ID: 448818
1、网络速度怎么样?
2、ado控件的属性是否设置正确
来自: yifawu1, 时间: 2001-02-04 21:30:44, ID: 448824
应用服务器上的ADOconction连接是在启动时就连好了
现在在服务器上事先打开表,
客户端直接连上(不传SQL语句)
若设packet 值为-1时,客户端打开仍要10秒.
来自: yifawu1, 时间: 2001-02-04 21:36:57, ID: 448826
ado控件的属性不知如何设才为正确,
与两层有何不同?
来自: 笑傲江湖, 时间: 2001-02-04 21:37:37, ID: 448827
做下两个测试:
1.改用DCOM连接试验一下.
2.改应用服务层换成TDATABASE/TQUERY试一下,我知道这不是你要的,测试一下看看问题到底在哪?
来自: yifawu1, 时间: 2001-02-04 21:45:26, ID: 448832
现在将packet 设为20, 打开还是很快,但是我必须访问所有记录
因为这个表是所有的库存物品,都可能用到.
来自: 笑傲江湖, 时间: 2001-02-04 21:49:21, ID: 448833
你PACKET不是搞过说不行吗
来自: yifawu1, 时间: 2001-02-04 22:09:19, ID: 448854
我是说现在设packet=20是快了,但是设为-1 就非得10 多秒
难到在程序进入时打开所有的大表吗?
来自: yifawu1, 时间: 2001-02-04 22:26:56, ID: 448861
难到为了使用三层结构就得让用户去多等10 多秒钟表吗?
来自: 房客, 时间: 2001-02-05 0:35:35, ID: 448947
关注此题
来自: Seoul_BJ, 时间: 2001-02-05 0:49:27, ID: 448955
老兄
拜托,无论什么时候也也不可能同时使用一个表中的所有数据啊,带有计算等问题的
可以放在应用服务器上完成,我算是服了你了。
来自: 季晓峰, 时间: 2001-02-05 13:00:49, ID: 449283
看看李维的书,应该对你有所帮助
来自: hclee, 时间: 2001-02-05 17:06:51, ID: 449446
楼上说的没错,用户是没法一次性看那么多记录的。
来自: VGA, 时间: 2001-02-05 18:02:29, ID: 449500
在进行统计汇总时。
来自: 陀螺, 时间: 2001-02-05 20:32:15, ID: 449606
查表工作应尽可能在服务器完成。
来自: yifawu1, 时间: 2001-02-05 21:36:55, ID: 449661
请你试试,虽然我可以设packet为20 ,打开时很快,
但是我用append 命令追加记录时,发现客户端还是要
返回库中的所有记录除非不用 append命令.
刚卖李维的书,照他的方法查询一条记录要 0.5秒左右,
可是用户要反复查询时,还不如把记录全部读进内存
因为这样只要 0.0几秒的样子
来自: 鱼片干子, 时间: 2001-02-08 10:46:56, ID: 451627
但是数据是有可能被别的用户改变的,如果读入内存,如何保证数据是一致的?
来自: rixin, 时间: 2001-02-08 11:33:01, ID: 451695
把表加幾個索引試一下.
来自: oooo, 时间: 2001-02-08 11:50:55, ID: 451718
三层结构和两层结构的区别主要在中间层,原先在client层的任务现在大部分放到
服务器层来完成,因此如果把两层改成三层,而任务仍然大多在client端完成的话
,这样反而容易造成性能的瓶颈,应该充分利用middle的缓存作用,把大部分任务
交给middle来完成,这才是设计三层结构的目的所在。
来自: qiu_peking, 时间: 2001-03-13 19:11:23, ID: 469731
不要一次把记录的所有字段都取过来,可以先只取关键字段。用户浏览到一条记录时再
将该记录完整取过来。这是解决该问题的唯一办法。
另外,检查一下你是否真的需要用户看到所有记录,SELECT语句应尽量加上限制条件。
来自: wjiachun, 时间: 2001-03-19 9:58:14, ID: 473224
多人接受答案了。
得分大富翁: hclee-20,oooo-20,qiu_peking-20,rixin-20,Seoul_BJ-20,季晓峰-20,陀螺-20,笑傲江湖-20,鱼片干子-20,左轻侯-20,