NOLOCK和Coldfusion

时间:2011-09-13 01:38:26

标签: sql-server tsql coldfusion

如果您未在NOLOCK中包含查询,那么前一天同事告诉我,在cfquery中使用cftransaction毫无意义。他声称SQL Server只会在事务中识别NOLOCK,因此在cftransaction内没有查询会使NOLOCK变得多余。

有人确认这是否属实,因为在我工作过的所有CF商店中,NOLOCK被慷慨地使用,并且很少在cftransaction内。我是否应该认为所有这些商店中的所有查询实际上并不尊重NOLOCK

3 个答案:

答案 0 :(得分:4)

您需要做的就是查看SQL Server上的执行计划,看看他们是否尊重NOLOCK。我可以确认(从多年的使用情况)NOLOCK确实很荣幸。我不建议它(检查READ_COMMITTED_SNAPSHOT_ISOLATION),但无论是否有cftransaction,它都是值得尊敬的。

答案 1 :(得分:3)

您的同事不正确,NOLOCK在上下文cftransaction之外并不多余。

如果您在SQL Server中使用默认设置,则无论是否已明确键入,您执行的每个查询都将包含在事务中。这称为“autocommit mode”。

答案 2 :(得分:0)

Ben Nadel有一个很好的解释以及一些参考文章,它们解释了NOLOCK的使用,然后我可以做得更好。但是,您不必在事务中使用NOLOCK来获得性能提升。

http://www.bennadel.com/blog/477-SQL-Server-NOLOCK-ROWLOCK-Directives-To-Improve-Performance.htm

希望这有帮助! 约翰