Skip to main content

デッドロックの犠牲者とは何ですか?

Deadlockの被害者はコンピューターユーザーであり、サーバーに接続されたクライアントとして機能し、その接続がデッドロックを解決するために終了することを選択しました。このタイプのデッドロックは、2つの異なるプロセスが同じリソースを利用しようとしている場合にしばしば発生します。これにより、両方のプロセスがロックされます。この問題を解決するために、多くのサーバーデータベースシステムがデッドロックがいつ発生したかを検出し、2つのプロセスのいずれかの接続を終了することを選択できます。デッドロックの被害者は、プログラムによってarbitrarすることができますが、ユーザーは通常、システムに最も簡単に再接続できる人として選択されます。ユーザーに接続が終了したとき。このエラーは、一般にデッドロックと呼ばれる状況で発生します。一般に、サーバーに接続されている2人のユーザーが、システムにロックを作成する方法で同じリソースにアクセスしようとしているときにデッドロックが発生します。たとえば、ユーザーAがリソース1を使用しており、リソース2を使用する必要がある場合、ユーザーBはリソース2を使用してリソース1を使用する必要がある場合、どちらのユーザーも自分のプロセスを終了できないため、デッドロックが発生します。この例では、2人のユーザーのうちの1人が、デッドロックの被害者としてシステムによって選択され、サーバーへの接続が終了します。これが発生すると、他のユーザーはプロセスを終了し、デッドロックを終了し、デッドロックの被害者がサーバーに再接続できます。ほとんどのサーバーデータベースプログラムは、デッドロック検出で設計されており、通常、一定の時間の後にデッドロックを検出します。デッドロックは必ずしも大きな問題ではありませんが、特にデッドロックの被害者として選択されたユーザーにとっては、ユーザーにとって迷惑であり、サーバーデータベースプログラミングの1つ以上の間違いを示している可能性があります。異なる場合があります。一部のプログラムは、純粋にランダムに被害者を選択します。これはかなり効果的ですが、どんな選択も解決策とデッドロックの終わりにつながるため、これは必ずしも理想的な方法ではありません。通常、サーバーは2人のユーザーを評価するようにプログラムされており、最も簡単に再接続できるユーザーや、切断によりデータの量が少ない人を選択します。