加上with(nolock)任何时候的查询速度都比不加快吗?

soldierluo 2013-05-12 03:08:52
加上with(nolock)任何时候的查询速度都比不加快吗?

但是我感觉不一定,我把所有的存储过程的查询都加with(nolock)后cpu反而100%,但是改一部分的话cpu视乎又能减少些,不确定到底是什么规律啊

请问,with(nolock)的使用到底要遵循什么样的规则,有什么办法可以直接测试加或不加两者间的效率差别
...全文
459 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁歌 2013-05-14
  • 打赏
  • 举报
回复
with (nolock)只是允许脏数据不锁表的一种查询并发机制,对性能缺少影响,CPU占用率高还是和SQL查询本身关系大。比如大表做分组聚合计算等。
gogodiy 2013-05-13
  • 打赏
  • 举报
回复
with(nolock)的主要作用是允许SELECT语句读取正在修改中的数据,也就是通常说的脏读(dirty read),对于数据修改数量很小而且对SELECT语句读出的数据精确性影响可以忽略的应用程序,可以使用这种方式来避免数据修改活动阻塞SELECT语句。 对于隔离级别来说,它允许SELECT语句读取数据而不需要请求(S)锁,既然不请求(S)锁,所以它既不会被(X)锁阻塞也不会阻塞(X)锁。
soldierluo 2013-05-13
  • 打赏
  • 举报
回复
那这个东西真是无迹可寻了,并发不是那么好测试的 其实现在感觉效果并不大,现在大概每秒10次的访问
發糞塗牆 2013-05-12
  • 打赏
  • 举报
回复
如果完全没有并发存在,那么with(nolock)其实没啥效果的,你要在并发环境才看到效果,至于CPU100%,有可能是其他影响的,所以这个要监控才行,不能马上下判断说是with(nolock)引起的
Andy-W 2013-05-12
  • 打赏
  • 举报
回复
with(nolock) ,对查询的资源不加锁(共享锁),它是降低事务隔离级别,相等于 set transaction isolation level read uncommitted
發糞塗牆 2013-05-12
  • 打赏
  • 举报
回复
不能太绝对,凡是要具体问题具体分析

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧