三层结构大数据量传输问题

时间:2021-06-11 14:32:27
    小妹现在正用Delphi开发三层MIS,遇到数据库大数据量传输问题。在数据库中有数万条以上的数据,应用户要求,实现无条件查询(即:没有约束条件的查询——虽然本人也清楚一次取数万条数据实属有病之行为——但是所有的外部环境决定了必须这样做)。
    虽然在应用服务器方把数据(数以万计)都取出来的前提下,客户方可以用ClientDataSet的PacketRecord属性来控制Server-Client间的数据流量,但是把数据取到应用服务器的时间也是让人不能忍受的,所以,请教高手,如何解决这个问题?
附:急!!!

10 个解决方案

#1


1.先排除慢不是由数据库表设计差造成;在服务器端执行你的查询,
看看速度如何,
2.排除数据库设计因素后还慢,可以考虑将应用服务器和数据库服务器放在
同一台机器上;
3.放在同一台机器上还慢,那么你应该针对你的查询做专门的优化处理,
比如用户虽然没有查询条件,你可以在程序中定义一个
分段但并集为True的多个查询,将查询结果分段显示给用户。
4.如果用户非要你将数万条记录一次显示到他的屏幕上,你可以先讯他一顿,
然后考虑用多线程查询,组合显示。

#2


不知cokegirl用的什么数据库?你可以试试用数据库的记录号系统变量,

#3


强烈建议你购买李维的新书<<Delphi 5.x分布式多层应用系统篇>>上面有一节专门讲了"处理大型数据集的技巧"他说的非常好!!!

#4


实现无条件查询???,那是什么查询?select * from atable哈哈哈。

#5


<<Delphi 5.x分布式多层应用系统篇>>那里有卖?!!!!谢谢回答

#6


关注

#7


先到书店(那个书店都有)买本李维的新书<<Delphi 5.x分布式多层应用系统篇>>,看过那节后。
我补充的建议是:
    加入多线程进行(有一定的AI)预取数据(浏览时),
    查询尽可能用后端数据库的Trigger(只传参)来完成(用多线程更好),
    更新时按原文法只更新变动数据,
    递增搜索时可以仅下载所有的一、两个关键字段放于本地,
    不要吝啬ClientDataSet的个数。

#8


谢谢大家的关心,本人近来忙于系统的其他模块,很久没有来论坛。
对于各位朋友提出的解决方案,本人还有一些不明之处,要请教各位:
1。多线程查询,AI是指的什么?(由于没有接触过多线程,比较陌生)
2。什么叫“递增搜索”呢?

这个问题的点数不多,谢谢大家热心参与。

#9


你可以一次返回一定数量的纪录比如20,
然后依靠用户的操作查询下20条纪录.
这样就解决问题了.

#10


这种要求果然变态哦。

#1


1.先排除慢不是由数据库表设计差造成;在服务器端执行你的查询,
看看速度如何,
2.排除数据库设计因素后还慢,可以考虑将应用服务器和数据库服务器放在
同一台机器上;
3.放在同一台机器上还慢,那么你应该针对你的查询做专门的优化处理,
比如用户虽然没有查询条件,你可以在程序中定义一个
分段但并集为True的多个查询,将查询结果分段显示给用户。
4.如果用户非要你将数万条记录一次显示到他的屏幕上,你可以先讯他一顿,
然后考虑用多线程查询,组合显示。

#2


不知cokegirl用的什么数据库?你可以试试用数据库的记录号系统变量,

#3


强烈建议你购买李维的新书<<Delphi 5.x分布式多层应用系统篇>>上面有一节专门讲了"处理大型数据集的技巧"他说的非常好!!!

#4


实现无条件查询???,那是什么查询?select * from atable哈哈哈。

#5


<<Delphi 5.x分布式多层应用系统篇>>那里有卖?!!!!谢谢回答

#6


关注

#7


先到书店(那个书店都有)买本李维的新书<<Delphi 5.x分布式多层应用系统篇>>,看过那节后。
我补充的建议是:
    加入多线程进行(有一定的AI)预取数据(浏览时),
    查询尽可能用后端数据库的Trigger(只传参)来完成(用多线程更好),
    更新时按原文法只更新变动数据,
    递增搜索时可以仅下载所有的一、两个关键字段放于本地,
    不要吝啬ClientDataSet的个数。

#8


谢谢大家的关心,本人近来忙于系统的其他模块,很久没有来论坛。
对于各位朋友提出的解决方案,本人还有一些不明之处,要请教各位:
1。多线程查询,AI是指的什么?(由于没有接触过多线程,比较陌生)
2。什么叫“递增搜索”呢?

这个问题的点数不多,谢谢大家热心参与。

#9


你可以一次返回一定数量的纪录比如20,
然后依靠用户的操作查询下20条纪录.
这样就解决问题了.

#10


这种要求果然变态哦。