重複の可能性:
SQL の Mutex アナログ?
SQL Server 2008 データベースの大量使用に依存する大規模な ASP.NET Web サービスがあります。最近、ログに次のメッセージが表示されるようになりました。
エラー 1205 : トランザクション (プロセス ID) は別のプロセスでリソース上でデッドロックされ、デッドロックの対象として選択されました。トランザクションを再実行します。
私はマルチスレッド プログラミングをよく知っており、デッドロックとは何かを理解しています。マルチスレッドの C++ または C# コードでは、mutex
orを使用critical section
してコードの相互に排他的な部分を分離し、デッドロックを防ぎます。
では、SQL Server に同じミューテックス メカニズムがあるかどうか疑問に思っています。
明確にするために、次のような複雑なステートメントがたくさんあります。
BEGIN TRANSACTION
'doing other SQL selects, updates, etc.
COMMIT
だから私が探しているのはこれです:
'ENTER CRITICAL SECTION
BEGIN TRANSACTION
'doing other SQL selects, updates, etc.
COMMIT
'LEAVE CRITICAL SECTION
このアプローチでは、テスト済みで実証済みの SQL ロジックを大幅に書き直す必要のない簡単なソリューションを探しています。