首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

job定时更新实效的需求,求思路

2013-02-20 
job定时更新时效的需求,求思路系统中所有的任务都放在一张表中,简单的说任务就是每个人处理过的(或待处理)

job定时更新时效的需求,求思路
系统中所有的任务都放在一张表中,简单的说任务就是每个人处理过的(或待处理)的一个事项,因为操作人多,任务类型也多,所以数据量现已大于1000万。

每条任务上有一个时效字段,即该条任务完成时间最多是X小时,如果超时未完成则要做相应记录。

现在我们是每小时通过job update该表的时效字段,让其-1,直到为0则超时。由于该表大部分是已完成任务,未完成的任务才需要更新时效,大约有几万条数据。

现在发现每次update都很缓慢,各种过滤条件加进去,需要几十秒到几分钟不等,这时候所有被update到的任务会被锁定,用户无法对这些任务进行update等操作,影响系统整体可用性。

求一个解决此问题比较好的思路。(由于要保持一定时间的历史记录可以查询 ,该表的记录量不会低于1000万)



[解决办法]
因为不了解具体情况,所以比较难给出正确的方法。试着说点自己的想法。
第一印象,该表的更新太过频繁,表内容既包含任务信息;也包含日志操作信息。
频繁更新情况下索引不是最好的选择。建议在第一次-1时取出rowid保存,后面直接使用rowid做更新。
还有一种方式是使用gemfire,直接将所有未完成的任务导入到内存,日常直接操作内存。只有在任务完成时才更新到数据库。

热点排行