23

永久に実行したいストアド プロシージャがありますが、ループで 1 秒間スリープします。ウェイクアップすると、テーブルをポーリングして、何らかの作業を行う必要があるかどうかを確認します。作業は 1 分ごとに実行するだけでよいため、ポーリング テーブルが 2 つのライターからの更新で同時にヒットする心配はありません。

ストアド プロシージャSLEEP()で間隔をあける最良の方法は何ですか? 実際には、200 ミリ秒スリープできればいいのですが、1 秒でも機能します。

4

4 に答える 4

27

私は同じ問題に遭遇しました。たくさんグーグルで調べたところ、使用できることがわかりました

SELECT SLEEP(<seconds>);

この数秒間、手順を遅らせます。あなたの場合、使用して

SELECT SLEEP(0.2);

大丈夫でしょう。

于 2012-10-26T03:10:47.777 に答える
8

以下を使用できます。

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

于 2016-09-01T08:33:15.783 に答える
0

使用しているデータベースを指定する必要はありませんが、一般的に必要なものを実現する方法は、sprocを細かく実行するのではなく、スケジューラやMSSQLのSQLServerエージェントなどの外部コンポーネントでsprocを頻繁に実行することです。 。

于 2012-05-12T00:13:36.510 に答える