2016-12-12 29 views
1

次のスクリプトがあります。スクリプトは実行されますが、壁時計の時間の後に5分ごとに実行されます。それは5分、10分、15分... 5分間隔で壁時計の時間に従うべきであることを意味する。実行の結果を測ることができるのは、時間は10〜30秒です。それは5分のマークに近づける方法はありますか?ありがとう。mysqlスケジュールイベントは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 
+0

サーバーに正しい時間がありますか?時間同期を保つためにNTPを実行していますか? – StefanR

+0

プログラミングの面では、いいえ、イベントでは何もできません。オペレーションをお勧めします。しかし、タイミングが重要であり、10〜30秒と言われた場合は、スケジューラーとして何を使用しているのかを再検討したいかもしれません。私が5分ごとに起こっているイベントを見ると、私は常に質問します。イベントはまったく必要ですか? – Shadow

+0

システム時刻が同期しています。 – AlbertK

答えて

1

あなたの設定は正しいようです。イベントのタイミングはであり、正確にはではありませんが、それはと合理的にです - それは半分ではいけません。

イベントのトラブルシューティングの面白い点の1つは、イベント内から警告を発することです。警告を送信できるクライアントがないため、警告は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 $$ 

それは、私がこれを使用するので、しばらくしているが、私は警告がすぐにエラー・ログに書き込まれ、イベントが終了するまでバッファリングされないことになると信じてい

+0

@AlbertK、これはあなたが問題を見つけるのを助けたと思いますか?問題は何でしたか? –

関連する問題