歡迎大家來討論clientdataset1.data:=datasetprovider1.data效率讓人無法忍受!!! ( 积分: 30 )

  • 主题发起人 主题发起人 delphisuccess
  • 开始时间 开始时间
D

delphisuccess

Unregistered / Unconfirmed
GUEST, unregistred user!
有個問題想和大家討論下。
我在做三層和ado采集1萬多條數據時發現兩者的耗時差距有6s.
結果我最後還發現用adoquery采集的數據給datasetprovider/clientdataset來做數據源給dbgrid時同三層采集數據一樣。問題就出現在datasetprovider/clientdataset上。不知各位有何解決之道嗎?
我三層調用:clientdataset1.data:=get_records(psql);//注明:函數返回olevariant類型結果(實際上就是:datasetprovider1.data值).
期待你們得討論。
 
有個問題想和大家討論下。
我在做三層和ado采集1萬多條數據時發現兩者的耗時差距有6s.
結果我最後還發現用adoquery采集的數據給datasetprovider/clientdataset來做數據源給dbgrid時同三層采集數據一樣。問題就出現在datasetprovider/clientdataset上。不知各位有何解決之道嗎?
我三層調用:clientdataset1.data:=get_records(psql);//注明:函數返回olevariant類型結果(實際上就是:datasetprovider1.data值).
期待你們得討論。
 
分段发送呢? 服务段压缩,客户端解压缩。
 
在三層模式種它本身已經是以自己的壓縮的封包形式傳輸。
鳄鱼先生:在1000條記錄以內,也還是要慢於ado直接連。
期待各位提出更好建議和方法。
 
ado直接連並不是將所有的數據取完才顯示的
 
to :delphisuccess
其实你这种做法不是很好...
olevariant的类型的数据本来就是很慢的~1000条也好,500条也好:在本地网络是不成问题的.如果你是B/S架构的话你想想如何处理那么多的请求.
建议你可以参照下传奇Game 的写法~~~
 
To:mark_yjh
传奇Game 的写法很抱歉我對此不是很了解,請問你能告知我嗎?
期待你的回復。
謝謝。
 
用文件流的方式可以进行有效的传输~
你可以把clientdataset1.savefile=*.cds
再把你的*.CDS进行壓縮,传到datasetprovider中,因为 datasetprovider接受的是customcientdateset的资料,你可以用 customcientdateset重新装载*.cds,
记住客户层是不能和数据库直接打交道的。。。。一定要用mentable or clientdateset 做
 
mark_yjh兄謝謝你的回復。
我先試下。另外你能不能給出一點源碼參考下。
分的話我可以再加給你。
謝謝。
 
QQ :47738898
msn :mark_yjh@hhotmail.com
 
delphisuccess 兄台,请这样试一下:
datasetprovider1.dataset := adoquery1;
adoquery1.DisableControls;
//加一句
clientdataset1.data := datasetprovider1.data;
adoquery1.EnableControls;
//加一句
这样是不是效率大幅提高了呢?
 
to:z_cd謝謝你給我的提示。我先測試下。
再把結果告訴你。
 
1。不要使用datasetprovider1的方式
2。少量取數據,並且壓縮。不要怕服務器和客戶端辛苦一些,因為你的瓶緊是在網絡
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3303659
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3303659
这个 贴 的 后几条 有对 MIDAS 的修正 你应该 用的到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2684589
 
多謝你們了。
我會把自己的最後結果告訴你們。
帖暫時不結。等待其他兄弟能發表自己高見。
 
后退
顶部