永久に実行したいストアド プロシージャがありますが、ループで 1 秒間スリープします。ウェイクアップすると、テーブルをポーリングして、何らかの作業を行う必要があるかどうかを確認します。作業は 1 分ごとに実行するだけでよいため、ポーリング テーブルが 2 つのライターからの更新で同時にヒットする心配はありません。
ストアド プロシージャSLEEP()
で間隔をあける最良の方法は何ですか? 実際には、200 ミリ秒スリープできればいいのですが、1 秒でも機能します。
永久に実行したいストアド プロシージャがありますが、ループで 1 秒間スリープします。ウェイクアップすると、テーブルをポーリングして、何らかの作業を行う必要があるかどうかを確認します。作業は 1 分ごとに実行するだけでよいため、ポーリング テーブルが 2 つのライターからの更新で同時にヒットする心配はありません。
ストアド プロシージャ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
使用しているデータベースを指定する必要はありませんが、一般的に必要なものを実現する方法は、sprocを細かく実行するのではなく、スケジューラやMSSQLのSQLServerエージェントなどの外部コンポーネントでsprocを頻繁に実行することです。 。