Mat*_*nde 7 sql sql-server deadlock
所以我有一个问题让我陷入困境.熟悉系统的人无法弄清楚为什么sproc会死锁,但是他们告诉我我应该把它添加到它:
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Run Code Online (Sandbox Code Playgroud)
这真的是一个有效的解决方案?那是做什么的?
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Run Code Online (Sandbox Code Playgroud)
这将导致系统返回不一致的数据,包括重复记录和丢失记录.阅读更多内容如果使用了NOLOCK提示,可能会错过以前提交的行,或者在Timebomb中也会错过 - NOLOCK/READ UNCOMMITTED的一致性问题.
如果你遵循正确的程序,可以调查和修复死锁,这不是什么大问题.当然,扔一个肮脏的阅读可能看起来更容易,但在未来的道路上,你将长时间盯着你的总账,并想知道为什么它不能平衡借记和贷记.所以请再读一遍,直到你真的理解这一点:DIRTY READs是不一致的阅读.
如果您想要一张监狱卡,请打开快照隔离:
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON
Run Code Online (Sandbox Code Playgroud)
但是,请记住,快照隔离并没有解决死锁,它只是隐藏它们.正确调查死锁原因和修复始终是适当的操作.