0

重複の可能性:
SQL の Mutex アナログ?

SQL Server 2008 データベースの大量使用に依存する大規模な ASP.NET Web サービスがあります。最近、ログに次のメッセージが表示されるようになりました。

エラー 1205 : トランザクション (プロセス ID) は別のプロセスでリソース上でデッドロックされ、デッドロックの対象として選択されました。トランザクションを再実行します。

私はマルチスレッド プログラミングをよく知っており、デッドロックとは何かを理解しています。マルチスレッドの C++ または C# コードでは、mutexorを使用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 ロジックを大幅に書き直す必要のない簡単なソリューションを探しています。

4

0 に答える 0