デッドロックを検出するコードを書きたいと思っています。デッドロックが発生した場合は、最大n回試行された DB 操作を再試行します。再試行の間に時間遅延を追加することがよくあることに気付きました。私が何を意味するかを明確にするためのC#コードを次に示します。
void RetryIfDeadlocks(Action dbOperation, int maximumRetries)
{
try
{
dbOperation();
}
catch (DeadlockException)
{
var shouldRetry = maximumRetries > 0;
if (shouldRetry)
{
Task.Delay(millisecondsDelay: 300).Wait();
RetryIfDeadlocks(dbOperation, maximumRetries - 1);
}
else
throw;
}
}
このような再試行ロジックに、再試行間の時間遅延を含める必要があるのはなぜですか?