如何减少 select 语句的死锁
How to reduce deadlocks on select statement
有人知道如何解决这个问题吗?当我跟踪错误时。我看到一段代码调用这个查询。
SqlException : Transaction (Process ID 57) was deadlocked on lock
SELECT A.[CallID]
FROM dbo.[Calls] A WITH(NOLOCK)
INNER JOIN [dbo].[Issues] B WITH(NOLOCK) ON A.[CallID] = B.[CallID]
WHERE A.[AddedByUserID] = @UserID
AND A.[EndTime] IS NULL
AND DATEDIFF(d,A.AddedOn,GETDATE()) <= 1
我对(NOLOCK)
的理解是防止死锁。但是为什么我会遇到这个错误?
您可以尝试打开 read committed snapshot 以便 select
不应该使用任何锁并获得一致的读取。
有人知道如何解决这个问题吗?当我跟踪错误时。我看到一段代码调用这个查询。
SqlException : Transaction (Process ID 57) was deadlocked on lock
SELECT A.[CallID]
FROM dbo.[Calls] A WITH(NOLOCK)
INNER JOIN [dbo].[Issues] B WITH(NOLOCK) ON A.[CallID] = B.[CallID]
WHERE A.[AddedByUserID] = @UserID
AND A.[EndTime] IS NULL
AND DATEDIFF(d,A.AddedOn,GETDATE()) <= 1
我对(NOLOCK)
的理解是防止死锁。但是为什么我会遇到这个错误?
您可以尝试打开 read committed snapshot 以便 select
不应该使用任何锁并获得一致的读取。