mysql每5分钟安排一次事件

mysql每5分钟安排一次事件,mysql,Mysql,我有以下脚本。脚本运行,但我想让它在挂钟时间后每5分钟运行一次。意味着它应该运行在5,10,15。。。按照墙上的时钟时间,间隔5分钟。我能测量的跑步结果是,时间是10-30秒。有没有办法让它更接近5分钟的标记?。谢谢 CREATE DEFINER=`root`@`%` EVENT `run_event` ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO

我有以下脚本。脚本运行,但我想让它在挂钟时间后每5分钟运行一次。意味着它应该运行在5,10,15。。。按照墙上的时钟时间,间隔5分钟。我能测量的跑步结果是,时间是10-30秒。有没有办法让它更接近5分钟的标记?。谢谢

CREATE DEFINER=`root`@`%` 
EVENT `run_event` 
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
DO CALL my_procedure

您的配置似乎正确。事件的时间安排不是非常精确,但它相当精确——足够精确到不需要半分钟

事件故障排除的一个有趣技巧是从事件内部抛出警告。由于没有可以向其发送警告的客户端,因此将警告写入MySQL错误日志。这应该在MySQL 5.5及更高版本中工作:

DELIMITER $$

DROP EVENT IF EXISTS run_event $$

CREATE DEFINER=`root`@`%` 
EVENT `run_event` 
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE
DO 
BEGIN
  SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event started';
  CALL my_procedure;
  SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event finished';
END $$

我已经有一段时间没有使用它了,但我相信警告会立即写入错误日志,并且在事件完成之前不会被缓冲。

您的服务器有正确的时间吗?运行NTP是为了保持时间同步吗?在编程方面,不,您不能对事件做任何进一步的操作。运营方面,你可能有一些回旋余地。但是,如果时间非常关键,以至于您注意到时间间隔为10-30秒,那么您可能需要重新考虑使用什么作为调度程序。当我看到每5分钟发生一次事件时,我总是问这样一个问题:事件是否需要?系统时间是同步的。@AlbertK,我想这有助于你发现问题?问题是什么?