(急!)java+oracle定期刷新页面导致性能低下的问题

shenxueshi 2006-10-08 09:06:53
各位:

在我们的项目中,有一个模块不定时向数据库中插入数据,在另外一个模块中客户要求尽可能实时的响应数据插入,提醒用户做出处理。

我们目前的作法是这样:在首页中利用javascript定期刷新某个页面,在这个页面中访问数据库,看是否有新的数据,如果有新的数据,就弹出一个页面供用户处理。

在多个用户同时访问的的情况下,如果设置刷新页面的间隔较短,由于每个首页都定期刷新页面,造成频繁访问数据库,导致程序运行非常慢;如果设置刷新页面的时间较长,实时响应又难以做到。

不知道要保证系统的实时响应,又不至于导致运行速度缓慢,有没有好的办法和方案?

谢谢!
...全文
246 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenxueshi 2006-10-13
  • 打赏
  • 举报
回复
jihanzhong(逍遥)老兄,能否就你的思路展开说一下,或者提供相关资料?呵呵,谢谢了!
shenxueshi 2006-10-13
  • 打赏
  • 举报
回复
谢谢楼上的各位!我们现在的解决思路跟上面各位提到的有类似之处。

由于向数据库中插入数据的来源是另外一家公司,通过双方的接口,他们通知我们有新数据,我们获得新数据然后插入自己的数据库,所以我可以在接口中实时获知何时有新数据。

设置一个类的静态变量作为有新数据的标识位,在接口中接到通知获取数据的时候,把标识位设置为1。

页面定时读取这个标识位,如果为1,就到数据库中读取数据,并把数据放入application变量,把标识位设置为0;页面读取标识位如果为0,就到application中读取数据。
qdly_yan 2006-10-11
  • 打赏
  • 举报
回复
顶,学习...
inorro 2006-10-11
  • 打赏
  • 举报
回复
顶,学习
jihanzhong 2006-10-11
  • 打赏
  • 举报
回复
1: 数据放在内存共享,类似DataSet
2:用户登陆后记录状态并分配cache
3:把更新部分记录索引放在各用户cache中
4:可以用ajax或其他技术根据cache内容,从内存取的更新记录,更新页面
5:监听session, 撤消过期或者登出用户,并清除其cache
harston 2006-10-11
  • 打赏
  • 举报
回复
如上所说,使用缓存,减轻数据库压力。
听说好像还有一种推技术,不知道怎么实现的,如果知道,就可以不用刷新页面了
akun_007 2006-10-11
  • 打赏
  • 举报
回复
刚刚经历了一个这样的项目,是用楼主的那个方法解决的,好在我们提醒的是最顶端的用户,只有那么几个。
后来想了想,基本思路和sozdream() 所说的一样。
就是用在服务器端运行一个线程,延时查询数据库,然后更改application的某个属性,或者修改一个配置文件,然后客户端延时查询application或是配置文件就OK了。
应该比楼主现在的方法节省资源。
龙翔飞雪 2006-10-10
  • 打赏
  • 举报
回复
sorry,看错了, 以为是在.net版里....
不过原理一样, AP SERVER那里运行一个线程,
此线程每几秒去DB获取一次数据。把数据保存在Application级别的Cache中或则某个class的static变量里。 (不要保存ResoultSet, 因为Connection关了就没了。)
龙翔飞雪 2006-10-10
  • 打赏
  • 举报
回复
每个客户端每隔几秒刷新一次去DB获取新数据,基本是不可取。
原因:如果有100个,200个客户端一起开着IE浏览, 那DB不是完了....

解决方法(只是提议,没仔细考虑可行不可行):
IIS那端运行一个线程,此线程每几秒去DB获取一次数据。
所有客户端刷新去取新数据全部取这个线程已经取到的数据集。

这样不管有多少个客户端开着,每几秒只会有一次访问DB。
shenxueshi 2006-10-09
  • 打赏
  • 举报
回复
没有人响应吗?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧