官方文档如下 If a repeating event does not terminate within its scheduling interval, the result may be multiple 
              instances of the event executing simultaneously. If this is undesirable, you should institute a 
              mechanism to prevent simultaneous instances. For example, you could use the GET_LOCK() 
              function, or row or table locking.

解决方案 »

  1.   

    所以答案是不会等执行完,只管开始执行,你可以使用getlock函数自定义锁,在上一个执行完后释放锁,下一个才会执行能够保证不会并发执行event
      

  2.   

    从官方的说明来看,是这样
    如果重复事件不其调度时间间隔内终止,其结果可能是同时执行该事件的多个实例。 如果这是不可取的,你应该建立一个机制,以防止并发实例。 例如,您可以使用GET_LOCK()函数,或行或表锁。
      

  3.   

    我看了下get_lock的使用方法但问题是,get_lock好像是锁不用用户对同一个资源的访问而event是数据库自己调用,它不是不同用户啊请问,能给一个例子吗,get_lock我真没用过
      

  4.   

    get_lock好像是锁不用用户对同一个资源的访问,这句话是错的锁的是针对不同的请求而言的,单个event的每次执行都属于新的一个请求,所以是可以在event的开始申请锁,在event结束的时候释放
      

  5.   

    myisam和innodb都有因为存储过程中有操作多个表,但大部分是myisam
      

  6.   

    不管你是哪种存储引擎,用getlock都是可以的
      

  7.   

    在存储过程中加了如下代码,还是一样啊,我加错了吗? DECLARE _lockName VARCHAR(100) DEFAULT "JobExtractCalculateExport"; #锁名

    #判断是否被锁
    IF(SELECT IS_FREE_LOCK(_lockName)=1) THEN

    #未被锁

    #给程序加锁
    SELECT GET_LOCK(_lockName, 10);

    #执行不允许争抢的资源
    BEGIN



    END;

    #释放锁
    SELECT RELEASE_LOCK(_lockName); 

    END IF;
      

  8.   

    这是跟踪记录,每一次执行会完成五个步骤,但是后面只完成了三个步骤1947 JobExtractCalculateExport-CalculateWeight 2014-04-09 13:50:04
    1946 JobExtractCalculateExport-ExtractTag 2014-04-09 13:49:45
    1945 JobExtractCalculateExport-Start 2014-04-09 13:49:45
    1944 JobExtractCalculateExport-End 2014-04-09 13:48:56
    1943 JobExtractCalculateExport-ExportMatch 2014-04-09 13:48:56
    1942 JobExtractCalculateExport-CalculateWeight 2014-04-09 13:46:04
    1941 JobExtractCalculateExport-ExtractTag 2014-04-09 13:45:45
    1940 JobExtractCalculateExport-Start 2014-04-09 13:45:45
      

  9.   

    是否因为IF(SELECT IS_FREE_LOCK(_lockName)=1) THEN 没走到进去,步骤就少了
      

  10.   

    没有走进去就不会有这三个记录了
    1947 JobExtractCalculateExport-CalculateWeight  2014-04-09 13:50:04
    1946 JobExtractCalculateExport-ExtractTag  2014-04-09 13:49:45
    1945 JobExtractCalculateExport-Start  2014-04-09 13:49:45只有JobExtractCalculateExport-Start没有JobExtractCalculateExport-End