簡體   English   中英

SQL Server 2005密鑰上的死鎖

[英]SQL Server 2005 deadlock on key

我有一個表,該表在uniqueidentifier列上具有聚集的主鍵索引。 我有一個運行以下偽函數的過程:

begin transaction
read from table 1
insert into table 2
update table 1 with pointer to table 2 record
commit transaction

所有這些都可以正常工作,直到從其他位置同時執行相同的過程為止。 一旦發生這種情況,其中一個執行就會死鎖,並每次在主鍵上終止一次。

除了簡單地說“不要同時運行它”之外,我能做什么來防止這種情況發生? 事務當前以READ COMMITTED隔離級別運行。

  1. 根據eulerfx.myopenid.com的提示,提高事務隔離級別。

  2. 使用sql“ mutexes”來簡單地等待一個過程完成,然后再允許另一個過程運行。 http://weblogs.sqlteam.com/mladenp/archive/2008/01/08/Application-Locks-or-Mutexes-in-SQL-Server-2005.aspx

  3. 使用快照隔離級別。 取決於您的應用程序可以執行此操作。 但是,這帶來了其他問題。 http://msdn.microsoft.com/en-us/library/ms189050.aspx

數字2比1需要更多的代碼更改。 但是有時候您不能僅僅增加隔離級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM