我们的dba通过我们的LINQ查询在数据库上创建了数千个锁的信息来了解我们。我们团队的开发人员挖掘了这款Hanselman帖子作为我们问题的可能解决方案:

http://www.hanselman.com/blog/gettinglinqtosqlandlinqtoentitiTiestousenolock.aspx < / p>

Scott在Linq提供3种方式以设置NoLock。 1)Transactionscope(首选),2)Sprocs,3)Context.executecommand

我们是一个99%的新闻网站,1%的写作,因此我们的重大焦点是检索速度。 nolock 所有Linq-to-SQL查询的良好策略?

我想要了解的是为什么使用nolock是不是一个好主意。必须有很多人具有相同的目标:许多快速读数,很少没有更新。如果nolock是明显的答案,那么为什么默认是默认的?为什么我不能在上下文中默认默认,而不是必须在每一个数据呼叫中设置它?

是nolock真的是许多快速读数的最佳选择,很少更新网站?

更新:在SQL Server 2005及更高版本中,Snapshot隔离优于NoLock? 我刚找到了这个 http://msdn.microsoft.com/en-us/library/ms179599.aspx

覆盖 read compited快照。这可以防止写入块,但不会返回脏数据?应该将90%的时间超过NOLOCK?

更新2:困扰我的是干燥

困扰我最困扰的部分是为了实现无锁或快照模式,我必须在每个LINQ-to-SQL查询方法上更改它(除了在更新中使用的SQL查询方法)。这种闻起来像违反干燥的主要侵犯。

有帮助吗?

解决方案

Worth noting: READ COMMITTED SNAPSHOT is (or at least was 2+ years ago) good enough for the site you're using.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top