三层结构速度慢,急 (100分)

  • 主题发起人 主题发起人 sunnyliu
  • 开始时间 开始时间
clientdataset有个属性packetdata最好设置成10
默认是-1即一次打包传送所有的记录!
你再试试吧!
 
clientdataset有个属性好象是packetdata
默认是-1,你改成10看看有没有提高!
另外PING以下,看看你网络的延迟是多少
 
to sunnyliu,
缓存池就是MIDAS的服务器端提供的实体(object)缓冲,它的大小通常是由内存大小
和使用的服务器决定的,对于物件(DataProvider),为了提高客户端的连接,通常会设置
多个实体在缓存池中,而每个DataProvier都是一个DataSet,占用了大量的资源,所以
在物件创建的时候建议不要打开表,而是提供Interface去激活物件,可以减少服务器
端的内存资源占用.
 
用ADO来存取数据,使用MIDAS以及ADO的控件来存取数据
 
正如nero_p所说,数据查询结果的返回你可以做成有状态的连接,不要一次返回全部数据。而要由客户端调用中间层的方法,
分次操作读取。复杂的数据或报表的生成,你可以在数据库中写成储存过程,把结果生成同步的临时表,由中间层去调用。这样返回
的数据量就是查询的数据量,这样就可以大大减少数据库到中间层的数据流量了[:)]。
 
同意tigerricky说法
在三层开发中,一定要注意routetrip大小,要注意分段查询,例如不要用locate的方
这个方法会把所有的数据下到客户段,但要如果分段查询,会带来一会有态连接的问题,
这个问题客户端增多问题就越明显,如果要做到无态分段查询就得从客户端发一标记给APP
Server,让APP server分段中下一段记录
 
MIDAS支持负载平衡、容错能力、CALLBACKS、DATABASE POOLING、OBJECT POOLING
和线程模型。
我建议还是创建无状态的TDATASETPROVIDER,即FETCHONDEMAND属性无FALSE,这样可以
使得TCLIENTDATASET共享连接。TDATASETPROVIDER可以不用为TCLIENTDATASET维护任何信息。
数据的更新和修改可以通过TCLIENTDATASET的APPSERVER来访问IAPPSERVER接口的方法来执行。
例如数据在更新时(即调用APPLYUDDATES时才自动的连接接口完成而不用一直维护该接口的信息)
那么你如果采用分段的方法时,你就需要自己维护了!方法如下:
1、Fetchondemand属性为false,packetdata为10
当客户端调用GETNEXTPACKET时,,在CLIENTDATASET的beforegetrecords事件处理函数中可以把
上次存取数据的最后一壁健值传递给DATASETPROVIDER,然后利用该健值社定DATASETPROVIER的CURSOR
位置。当新的数据来了后,在CLIENTDATASET的AFTERGETRECORDS事件处理函数中你可以存储新
数据的的最后一笔健值,以便下次调用。
具体参阅李维的《DELPHI5。X 分布式多层应用系统篇》
 
最好的方法是,不要的数据,一个也不要从服务器上取过来;需要的数据,分批次取过来!
如果,总是有大量的数据要和服务器交换,速度当然慢!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
756
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部