日期:2014-05-16  浏览次数:20904 次

mysql通过定时器定时拷贝数据的功能
通过定时器,定时从一张表内拷贝数据到另一张表,现在碰到的问题是,因为定时器执行存储过程不是线性的,即:不等待存储过程执行结束再继续下一次操作,而是调用存储过程后马上计时,等待时间段后,再调一个线程执行这个存储过程。
这样造成拷贝数据冲突,有没什么好办法可以解决的,谢谢.

小弟手上只剩下20分了,不好意思。

------解决方案--------------------
1。是不是定时器设的间隔过小,导致上次还没完成,下次就要开始。
2。是否存储过程里面的设计有问题?比如,已经拷贝过的且没有被update过的记录又做了一次拷贝?可否考虑拷贝之前对没变的数据做下过滤?比如原表结构里面加上last_modify_time这样的字段,凡是拷贝操作时间>上次记录变化时间的记录就表示拷贝过且没有变化,这次就不拷贝了?

个人愚见哈
------解决方案--------------------
探讨

比如第一次触发时,我在拷贝id:1--10000,还在拷贝中
这时候时间过了3秒钟,定时器又触发了,又执行这一次操作,正确的就是从10001开始拷贝,但由于第一次未未完成,导致第二次触发的起始ID不正常(目标表内获取ID,但这个ID可能只到5000)

------解决方案--------------------
为什么不直接在定时任务中 insert into 另一张表 select * from 一张表
------解决方案--------------------
探讨

比如第一次触发时,我在拷贝id:1--10000,还在拷贝中
这时候时间过了3秒钟,定时器又触发了,又执行这一次操作,正确的就是从10001开始拷贝,但由于第一次未未完成,导致第二次触发的起始ID不正常(目标表内获取ID,但这个ID可能只到5000)