从常量插入的表中选择

Ant*_*res 6 sql select deadlock insert sql-server-2008

我将如何从一个常量插入(并且需要)的表中获取数据而不会导致任何锁定,以便插入将继续被忽略.

我环顾四周,发现选择nolock选项,但是,如果我理解正确,这不会阻止锁定创建,而是围绕当前锁定并抓住一切?

谢谢.

编辑:此表永远不会更新,只有INSERTS和SELECTS

Car*_*rth 3

只要您不介意从表中读取脏数据,这对您来说就不成问题。确保正确设置转换隔离级别,并且您的调用代码(如果适用)没有使用隐式事务,这样应该没问题。

Microsoft 的事务隔离文档: http://msdn.microsoft.com/en-us/library/ms173763.aspx

在我看来,NOLOCK 是一个常见的选项,在遇到这种情况时,它被滥用了。尽管它可以帮助您克服高争用情况下的问题,但也可能导致难以追踪错误。尽管这是一个持续的争论,但请查看http://blogs.msdn.com/b/davidlean/archive/2009/04/06/sql-server-nolock-hint-other-poor-ideas.aspx以获得一个想法使用此类提示的一些风险。