关于三层结构比C/S速度明显要慢的问题,如何加快三层结构读取master/detail表的速度?请各位大侠指教! (200分)

  • 主题发起人 主题发起人 kclever
  • 开始时间 开始时间
K

kclever

Unregistered / Unconfirmed
GUEST, unregistred user!
使用三层结构(使用dcom,中间层中连接master/detail的方法用两个query,
一个datasource,一个datasetprovider的连接方式),在客户端用dbgrid打开
master/detail表,比使用两层用dbgrid打开master/detail表的慢很多!
请问各位有什么提高速度的方法??
*****************************************************************
如果大家不清楚三层比C/S有多慢,可以做一个很简单的测试。
数据库就用DBDEMOS,使用customer(主表),detail(从表)两个表,用两个dbgrid
来显示,分别使用三层结构和C/S结构,大家就可以看到在时间上有明显的区别。这在
三层结构是致命的。
我的机器测试的结果(dbgrid打开时间)
三层结构:4.16秒 C/S结构:0.15秒
主表有55条记录,从表有205条记录,只有这么少的数据量就有如此慢,是无法可以忍受的。
请问各位高手对此有没有提高速度的方式??
 
三层结构在客户端少的时候,速度本来就比不上C/S结构。这是它的结构所决定的。
要提高三层速度,也只能是一定量的,不可能会超过C/S结构的访问速度。
三层的优势体现在大量客户端的情况下。
 
谢谢ICDB的意见!
但我想做到的并不是速度超过C/S结构,只是想做到差不多,起码是接近。但现在就算是
主表是55条记录,从表205条记录。三层比起C/S结构速度都有明显的差距,这速度已经不
可以忍受!何况上千上万条记录,就更不用说了!
请各位高手继续讨论,谢谢!!
 
多看李维的书,三层速度慢的问题可以解决,它的优势不光只局限这些,比如客户端程序的分发 ,
COM特性,以及负载平衡上,速度慢不是它的瓶颈。
 
如果后台使用Oracle,在某些情况下,它的客户端连接时会很慢,如果你作的三层没有使用
缓冲池技术,每次的远程数据模块都要重新连接SQL服务器就会这样了。
其实情况我就想象不出来到底有多慢了。因为你也说得不具体。
 
看他的书也没用,
里面有一个鱼与熊掌兼得的东西,
一点都不可靠,除非单用户就可以。
 
谢谢大家的意见!
如果大家不清楚三层比C/S有多慢,可以做一个很简单的测试。
数据库就用DBDEMOS,使用customer(主表),detail(从表)两个表,用两个dbgrid
来显示,分别使用三层结构和C/S结构,大家就可以看到在时间上有明显的区别。这在
三层结构是致命的。
我的机器测试的结果(dbgrid打开时间)
三层结构:4.16秒 C/S结构:0.15秒
主表有55条记录,从表有205条记录,只有这么少的数据量就有如此慢,是无法可以忍受的。
请问各位高手对此有没有提高速度的方式??
 
DCOM初次连接比较慢,第二次会快很多。
当然,三层的优势应该是在于他的扩展性,而不是他的速度。
 
三层是两层加一层,不可能快过两层
不要用主从表
 
三层的优势是扩展性,而且初次连接时速度肯定慢些的.
 
我也遇到这个问题。
我跟踪了一下,它们的速度差别好像不在于数据传输,而是数据打包和解包很浪费时间,这些时间主要花在根据主表记录检索子表数据上,不过我还没有彻底搞清楚。
 
少量
多次存取
LW,讲的不是偶讲的
 
不要在应用服务器上作主从表连接。在客户端作主从表连接。
 
我觉得不可能这么慢,楼主是怎么用主从表的,建立主从表可有三种方式
 
在服务器端建立主从连接就会如此,我找到了原因:因为在服务器端不断调用ApplyRange,不过我改不动这段代码,现在只好先在客户端写。
 
后退
顶部