none
开启快照级隔离后还继续使用NoLock会不会引起阻塞??? RRS feed

  • 问题

  • 使用如下指今开启了快照级隔离后还继续使用NoLock(比较大的查询)会不会引起DML操作阻塞???

    ALTER DATABASE *******MyDatabase********
    SET ALLOW_SNAPSHOT_ISOLATION ON
    ALTER DATABASE *******MyDatabase********
    SET READ_COMMITTED_SNAPSHOT ON

    快照级隔离和Nolock都是为了解决并发性的问题,如果两个都在使用会不会导致负负得正的结论?

    为什么SQL Server不自动开启快照级隔离的功能?

    而Oracle中默认是开启了类似的功能,因此才提高了并发度(个人理解),不清楚开启快照级隔离是不是还有些什么限制?

    谢谢

    2010年12月23日 8:10

答案

  • Shouldn't, but why want to do that in first place. You can enable snapshot isolation on database when create it, keep in mind that it'll use lot of tempdb space and app has to close session properly to release unneeded snapshots.
    • 已标记为答案 jiaohongtao 2010年12月24日 3:07
    2010年12月23日 13:38

全部回复

  • Shouldn't, but why want to do that in first place. You can enable snapshot isolation on database when create it, keep in mind that it'll use lot of tempdb space and app has to close session properly to release unneeded snapshots.
    • 已标记为答案 jiaohongtao 2010年12月24日 3:07
    2010年12月23日 13:38
  • Shouldn't, but why want to do that in first place. You can enable snapshot isolation on database when create it, keep in mind that it'll use lot of tempdb space and app has to close session properly to release unneeded snapshots.

    我的工作是管理DB,而开发人员要移除"Nolock" 需要时间,所以才会出现目前这样的情况.

    我有一点想不通的是:READ_COMMITTED_SNAPSHOT这个隔离级别和NoLock一起使用,是不是和快照没有被启用是一样的情况?

    而关于TEMP DB 我已将其加强,數據文件分散到多个磁盘,I/O应当不会出现问题.

    2010年12月24日 3:07
  • READ_COMMITTED_SNAPSHOT uses row versioning to provide statement-level read consistency, therefore don't need nolock in the query. Snapshot isolation uses row versioning to provide transaction-level read consistency by the way.
    2010年12月24日 3:55