我有一个 存储过程,我想让它一直运行,但循环中要睡眠一秒钟。当他醒来时,它会轮询一张表,看它是否需要做一些工作。 工作只需要每分钟完成一次,所以不用担心轮询表被两个写入者同时更新。
在一个 存储过程 中,最好的方法是使用 SLEEP()
来等待一段时间。如果能够睡眠200毫秒就更好了,但1秒也可以。
我有一个 存储过程,我想让它一直运行,但循环中要睡眠一秒钟。当他醒来时,它会轮询一张表,看它是否需要做一些工作。 工作只需要每分钟完成一次,所以不用担心轮询表被两个写入者同时更新。
在一个 存储过程 中,最好的方法是使用 SLEEP()
来等待一段时间。如果能够睡眠200毫秒就更好了,但1秒也可以。
我遇到了同样的问题。在搜索了很多后,我发现我们可以使用
SELECT SLEEP(<seconds>);
为了延迟我们的程序这么多秒钟。在您的情况下,使用
SELECT SLEEP(0.2);
会很好。
您可以使用:
DO SLEEP(0.2);
参考资料:http://dev.mysql.com/doc/refman/5.7/en/do.html
或者
SELECT SLEEP(0.2);
参考文献: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_sleep
CREATE EVENT performance_schema_snapshots.fill_events_statements_summary_by_digest_history1
ON SCHEDULE -- every day at 6 am
EVERY 1 DAY
STARTS TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 14 HOUR
DO
-- take snapshot
CALL performance_schema_snapshots.events_statements_summary_by_digest_snapshot_reset ();
你没有指明使用哪种数据库,但通常实现你想要的方式不是让一个无限运行的sproc而是有一些外部组件,比如调度程序或MSSQL中的SQL Server Agent,定期执行该sproc。