锁定老帖子 主题:B/S模式大批量数据处理方式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-22
将用户真正的需求归结好,每天或者每周凌晨对备份库进行定时汇总,用户实际查询的时候,只是从汇总表里进行简单的取统计好的数据即可。目前对于几个都在500W以上的关联表进行汇总都是采用这种方式。
|
|
返回顶楼 | |
发表时间:2010-06-22
后台应该写定时批处理吧。
batch定时处理,一般都是凌晨启动跑。 哪有画面上点个按钮,后台跑3个小时的啊。(对客户不友好啊)。 除非你的画面是个后台管理画面不是客户用的,是管理人员用的差不多。 |
|
返回顶楼 | |
发表时间:2010-06-22
select count(*) into vn_number
from SYS.V_$ACCESS a,SYS.V_$session b where a.type='PROCEDURE' and a.OBJECT like 存储过程名称' and a.sid=b.sid and b.status='ACTIVE'; 来判断是否在运行 |
|
返回顶楼 | |
发表时间:2010-06-22
jinliangonline 写道 将用户真正的需求归结好,每天或者每周凌晨对备份库进行定时汇总,用户实际查询的时候,只是从汇总表里进行简单的取统计好的数据即可。目前对于几个都在500W以上的关联表进行汇总都是采用这种方式。
赞同,这么大的计算量应该不是客户“突然”想点一下得到结果的吧? 建议定时的形式来做,比如每天凌晨将数据跑出来,客户直接看就好了。。不用点“引爆”按钮 |
|
返回顶楼 | |
发表时间:2010-06-22
nison 写道 在线程类里加一个boolean型的静态变量 isReady=false, 进入时判断isReady状态,处理前修改状态为false,处理完毕修改isReady状态;
如果处理完后 要有结果展示给前端,还需要把结果存到数据库里 嗯,这个和我想的差不多。 |
|
返回顶楼 | |
发表时间:2010-06-22
Frankie199 写道 nison 写道 在线程类里加一个boolean型的静态变量 isReady=false, 进入时判断isReady状态,处理前修改状态为false,处理完毕修改isReady状态;
如果处理完后 要有结果展示给前端,还需要把结果存到数据库里 嗯,这个和我想的差不多。 no~ 如果web服务器重启了,而数据库服务器没有重启存储过程还在运行,怎么办? |
|
返回顶楼 | |
发表时间:2010-06-22
如果是这样的应用,我宁愿做一个定时处理,让用户自己安排何时处理就行了,放在界面上点按钮,有点浑!
|
|
返回顶楼 | |
发表时间:2010-06-22
需要运行三个小时,确实有点那个。
我以前做过一个也是大数据量处理的,调用存储过程,然后把需要的数据不断写到一个表中,时间大概为1-5分钟,我是用Ajax方式,每十秒钟从前台往后台发送一个请求,查看表中是否有新的数据,如果有则在前台展示出来。直到运行结束,然后,返回一个结束标志。 |
|
返回顶楼 | |
发表时间:2010-06-22
强强爱妍妍 写道 Frankie199 写道 nison 写道 在线程类里加一个boolean型的静态变量 isReady=false, 进入时判断isReady状态,处理前修改状态为false,处理完毕修改isReady状态;
如果处理完后 要有结果展示给前端,还需要把结果存到数据库里 嗯,这个和我想的差不多。 no~ 如果web服务器重启了,而数据库服务器没有重启存储过程还在运行,怎么办? 哦,我以为是程序处理的,如果是存储过程还是楼主的方法好. |
|
返回顶楼 | |
发表时间:2010-06-23
引用 如果是这样的应用,我宁愿做一个定时处理,让用户自己安排何时处理就行了,放在界面上点按钮,有点浑!
不是所有的东西都能定时处理的, 例如我做过一个项目,根据用户选择的条件,在数据库中检索出相应的会员,然后发送促销信息邮件。 一般都检索出几万个会员,每个会员发一封邮件, 由于网络等问题,一般都要3至5个小时。 而且用户要求必须是他点击发送按钮后立刻发出。 我的这种情况的解决方法跟楼主采用的方法基本一样。 另外,回帖时请注意措词,谢谢。 |
|
返回顶楼 | |