デッドロックが発生したときにプログラムを再帰的に呼び出すにはどうすればよいですか?
<p>私のジョブ「ストアド プロシージャ」は夜間に実行されます。時々行き詰まってしまいます。デッドロックを発見した場合、15分後に同じ処理を3回まで実行するコードを書きたいです。 </p>
<p>今が午前 10 時だとします。次に、午前 10 時に実行し、デッドロックが見つかった場合は、午前 10 時 15 分にジョブを再度呼び出します。次に、「デッドロックの場合」午前 10 時 30 分に、次に「デッドロックの場合」午前 10 時 45 分にジョブを呼び出します。最後の実行でデッドロックが発生した場合は、ジョブを完全に終了します。 </p>
<p>これが私がやったことです。 </p>
<pre class="brush:php;toolbar:false;">totalTrys INT DEFAULT 0; を宣言します。
SQLEXCEPTION の終了ハンドラを宣言する
始める
診断条件の取得 1
@err_num = MYSQL_ERRNO;
if(@err_num = 1213 AND totalTrys < 4) THEN
SET totalTrys = totalTrys 1;
SELECT SLEEP(900);
Guardi.prod_update_guardi_accounts() を呼び出します。
終了 IF;
END;</pre>
<p>これは効率的なアプローチですか?デッドロックを解消するより良い方法はあるでしょうか? </p>