job执行时间过长导致下次执行时间推迟 只要下个10分钟到了,就另启动一个线程进行作业,早晚得死机,说说你的job干什么用的,1。照楼上的,部分或全部换成触发器2。优化优化 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不同时间段,系统数据量也不同,一般情况下,job的执行时间不超过1分钟,但是有极少数时候数据量就特别大,因此就出现了执行2,3个小时的情况,触发器对我来说没有什么用,我就是每10分钟处理一次数据而已 好像没什么特好的办法,如果这样你只能好好分析你的每条语句,然后进行优化来缩短job的执行时间。 没有什么好办法除非你把这个任务也作为一个job,用另一个job来调用,这个调用的job每10分钟执行一次 如你的任务是job1,job1只执行一次再建立一个job为job2job2的任务就是每10分钟生成一个job1,添加到job表中 果然是好思维!由于搂主说的那种情况少见,可以折中,生成job的时间间隔可以设为一个小时 其实我在最开始就给楼主建议用多线程并行来做.有些操作完全可以不要放到数据库来做,前台控制可能更方便些.象这种问题开多线程或多进程比用数据库的job要好得多.但是并行麻烦的地方在于锁的问题.我们就曾经遇到过这样的问题,只是逻辑更复杂一些,CPU,IO都是爆涨.而且死锁时不时的出来.最后实在没办法就只好串行来做了. 不太理解上面说的“每10分钟生成一个job1,添加到job表” 是什么意思?job1如果已经在跑了,job2即使再调用它,也似乎并不执行的;而且job2在调job1时,job2 也相当于在跑,如果10分钟没法完成,那也就和现在的情形一样了,没法保证10min后job2再发起任务阿。是否可以这样?新建一个job2,next time 及internal 和你原来的job1相同,internal适当可以比job1迟几秒。在job2 的逻辑中,首先判断是否你原来的job1在跑,并且this date 和this sec是否是当前的时间,如果是 ( 说明job1 是刚刚起来的),则 null,否则 (说明job1 是10分钟之前或者更早跑起来的),则执行job1 中的业务逻辑。(注意,这儿是执行job1种的业务逻辑,而并非去调用job1). 我大概可以想象楼主说的情况,计划每10分钟读取增量数据,但是绝大多数增量数据很少,所以很快执行job完毕,不会影响下一次启动。但是某一次增量数据突然很大(有可能是一次性传输过来一天或者半天的数据),对应的job没有结束的话,下一个10分钟启动不了job,是这样吧?我面临过类似问题,没有相处很好的解决办法。但是可以考虑如学海无涯苦作舟的思路,用外部程序启动,最简单的例如windows作业任务那样的,执行脚本就可以了。当然如果还有job启动不了或者在10分钟完成不了的情况,下次job可能会漂移。希望“漂流瓶”可以详细说说他的想法 用crontab或计划任务不已可以解决的! 要进入SQLPLUS之前必须启动哪些服务啊??请指点 请问多服务器间如何实现数据同步?谢谢! 请问这个有没有简化一点儿的写法啊? sql取定量数据的问题,急急急,在线等结果请高手们指定 问一个oracle修改数据库的问题,通过表关联,将某表若干字段的数据赋值到另外一表的对应字段,初学oracle,先谢了 初学者,请教一个简单问题! 请问怎样调用存储过程! 连接用户怎样查看自己可以使用的表空间的名字和限额? 存储过程中参数能否为数组或数据集!(急!在线等待!) (讨论)基于SQL Server的程序代码移植到Oracle数据库中需要注意那些问题? 数据链路创建失败 数据库导入导出的问题
除非你把这个任务也作为一个job,用另一个job来调用,这个调用的job每10分钟执行一次
再建立一个job为job2
job2的任务就是每10分钟生成一个job1,添加到job表中
但是并行麻烦的地方在于锁的问题.我们就曾经遇到过这样的问题,只是逻辑更复杂一些,CPU,IO都是爆涨.而且死锁时不时的出来.最后实在没办法就只好串行来做了.
job1如果已经在跑了,job2即使再调用它,也似乎并不执行的;
而且job2在调job1时,job2 也相当于在跑,如果10分钟没法完成,那也就和现在的情形一样了,没法保证10min后job2再发起任务阿。是否可以这样?
新建一个job2,next time 及internal 和你原来的job1相同,internal适当可以比job1迟几秒。
在job2 的逻辑中,首先判断是否你原来的job1在跑,并且this date 和this sec是否是当前的时间,如果是 ( 说明job1 是刚刚起来的),则 null,否则 (说明job1 是10分钟之前或者更早跑起来的),则执行job1 中的业务逻辑。(注意,这儿是执行job1种的业务逻辑,而并非去调用job1).
我面临过类似问题,没有相处很好的解决办法。但是可以考虑如学海无涯苦作舟的思路,用外部程序启动,最简单的例如windows作业任务那样的,执行脚本就可以了。
当然如果还有job启动不了或者在10分钟完成不了的情况,下次job可能会漂移。
希望“漂流瓶”可以详细说说他的想法