三层体系结构中查询处理的问题?

[复制链接]
查看11 | 回复9 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
受 blamebird 兄弟的启发, 开一个三层体系结构查询结果集的讨论.
在三层体系结构中,由前台界面(专用,WEB)发起一个查询,应用服务器根据查询条件查询数据库,再把结果集返回给前台.如果结果集比较大,如何处理能够快速高效?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
我先来抛一块砖。
大结果集,游标会把结果集一段段的返回。如果在结果集中反复的MOVE是比较的慢,在CLIENT端如果有必要的话用一个数组放ORACLE主键,再用主键去查询。WEB开发有的时候也用数组来减少数据库查询的次数。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
吧满足条件的结果分次查询出来, 见OCP板置顶的文章
‘在CLIENT端如果有必要的话用一个数组放ORACLE主键,再用主键去查询。’ 这个方法怎么用啊?
‘WEB开发有的时候也用数组来减少数据库查询的次数。’ 能具体说说么? 我们正有次问题
最初由 zl_king 发布
[B]我先来抛一块砖。
大结果集,游标会把结果集一段段的返回。如果在结果集中反复的MOVE是比较的慢,在CLIENT端如果有必要的话用一个数组放ORACLE主键,再用主键去查询。WEB开发有的时候也用数组来减少数据库查询的次数。 [/B]

回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
我做了一个测试, 如果索引创建的好, 从一个比较大的表中查询一屏(30条)数据的速度也是很快的, 如果这样的话, 就不用查询一个大的结果集了, 每次只查询一屏的数据就行了. 这样还避免了另一个问题:原来我们都是根据前台输入的条件把结果集查询出来, 每次前台翻页的时候,从应用服务器的结果集中传给前台, 这样中间翻页很快,开始查询非常慢,给人感觉像死机了一样. 每次查询虽然总的时间是长了,但是把第一次的长时间分散到每次翻页上, 如果时间合理(据说是<5S)的话, 效果要比原来好
‘在CLIENT端如果有必要的话用一个数组放ORACLE主键,再用主键去查询。’
‘WEB开发有的时候也用数组来减少数据库查询的次数。’
如楼上所说, 这两个方法我也不知道,请说明. 谢了先
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
那样会快, 但数据库会比较泪
zl_king 的意思是比如用HASH 表吧
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
是啊,哈哈! 可能比较笨,但是很有效啊
由于有应用服务器,我们的数据库只是用来存储数据,查询,没有什么处理,再不让它干点活,那8CPU, 4G内存不是太浪费了.
hash表? 那也太累了吧
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
不好意思,我没说清楚。
我说的只是一个特殊的应用。
曾经做的一个CLIent端应用,经常需要在大结果集中MOVE,同时为了减少并发数,要求连接建立的时间尽量短。当时是先把主键查出来放在一个数组中,当MOVE时再按照主键到数据库中去查。
至于WEB,就是把一些常用到的而比较费时间的结果集(比如总数)放在数组中,用时从数组里拿出来而已。
BTW:我觉得大结果集具体采用什么方法的操作,需要看最后用户的操作习惯,但个人感觉不能让用户一次等待返回的时间太长。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
说到三层结构,我们在用的是基于XML和MSMQ的架构,但是好像MSMQ对于查询结果超过1500条左右的就不支持了,不知道你们说得这个三层结构,应用服务器和客户端用什么通信?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
那也差了点吧,只能用于玩了。大数据量就不能做了。
XML和MSMQ的结构其它方面是不是挺有优势的?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
XML比较时髦一些,而且确实比较方便。MSMQ则是配置比较简单,当是因为比较急,所以也就凑合着用了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行