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

解决方案 »

  1.   

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

  2.   

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

  3.   


    这就是你的定时器设计的问题了。应该wait到上一次拷贝完成时给出的信号开始计时。
      

  4.   

    为什么不直接在定时任务中 insert into 另一张表 select * from 一张表 
      

  5.   


    对的,就是这种情况,要怎么处理,有没办法让定时器wait到上一次拷贝完成后给出的信号开始计时