关于三层中数据查询的方法,我的观点正确吗? ( 积分: 50 )

  • 主题发起人 logitech1229
  • 开始时间
L

logitech1229

Unregistered / Unconfirmed
GUEST, unregistred user!
有很多人在设计的时候动态读取数据库内容,通过更改一个临时Clientdataset中的commandtext内容并在服务端执行查询,我觉得这样不是最好的办法,大量的網絡資源被佔用了,例如點廠商信息combobox彈出的內容都要從數據庫取一次.這樣做佔用了大量網絡資源,導致如果有很多人同時開程序的時候會無響應.所以是否應該盡量將變動較小的庫內容一次性取到本地來進行查詢,這樣做盡管啟動的時候稍慢一些,但是在系統運行的時候會大大降低網絡資源調用頻率,提高網絡佔有率,減小瓶頸.
我的想法是否正确?能否提出一些更有效的办法来加快数据查询?
 
有很多人在设计的时候动态读取数据库内容,通过更改一个临时Clientdataset中的commandtext内容并在服务端执行查询,我觉得这样不是最好的办法,大量的網絡資源被佔用了,例如點廠商信息combobox彈出的內容都要從數據庫取一次.這樣做佔用了大量網絡資源,導致如果有很多人同時開程序的時候會無響應.所以是否應該盡量將變動較小的庫內容一次性取到本地來進行查詢,這樣做盡管啟動的時候稍慢一些,但是在系統運行的時候會大大降低網絡資源調用頻率,提高網絡佔有率,減小瓶頸.
我的想法是否正确?能否提出一些更有效的办法来加快数据查询?
 
想法基本正确,但因为数据库服务器的内容是不断变动的,你可以思考一下DBExpress的工作过程。
 
个人认为应该是对于常用的数据(如这里的供应商)直接放在本地,查询的时候直接查询本地数据而不是再从服务器端取数;当然这样子就要考虑数据的同步性了,对于这个我有两个想法:一是提供一个按钮让用户刷新这些数据,另一个办法是修改了这些数据库应通知其他客户端刷新数据。前一个简单,后一个没实现过。
 
其实三层里提供了刷新数据的功能。其刷新机制是每次比对取出的数据和
数据库里的数据的异同,这样只从新获取变化的数据,以此来减少全部从新
刷新的高網絡佔有率。
其实如果只是局域网用,即使全部重新取,也不存在速度问题。关键是你的表结构
一定要做得好。如果是广域网用,我觉得还是BS的好。
 
楼上的完全正确!!
 
zjunlong果然是高手,请教你三层中的数据刷新功能是否需要进行什么设置?还是这种刷新数据的机制已经包含在数据传送组件里?
还有更好的意见吗?
如果没有就结贴了哦:)
一个星期为限
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
661
import
I
I
回复
0
查看
733
import
I
顶部