【问题标题】:Default table lock hint on SQL Server 2005/2008SQL Server 2005/2008 上的默认表锁定提示
【发布时间】:2010-10-06 22:20:38
【问题描述】:

如何查找默认的全局表锁定提示?


-- 问题

  1. 是否有返回此类信息的 DMV/DMF(动态管理视图/功能)?
  2. 还有,有没有办法更改默认锁定提示?

目前我几乎在所有地方都添加了nolock 提示以防止锁定。
我想通过将默认锁定提示更改为nolock 来避免这样做,这样现有的存储过程就不需要更改。

【问题讨论】:

  • 这听起来很奇怪 - 您尝试解决的数据库设计中是否存在一些错误?
  • 我只是想看看存储过程中缺少nolock 提示是否是所有查询超时的原因

标签: sql-server-2005 sql-server-2008 locking


【解决方案1】:

没有全局设置。默认始终为READ COMMITTED

可以修改

NOLOCK 无处不在 misguided 这里也是:

编辑:关于查询超时的评论后...

使用 NOLOCK 的查询仍然会消耗大量 CPU 和 IO 资源。锁定不是什么大问题。如果是,那么另一个查询耗时太长,可能会消耗大量 CPU 和 IO 资源...

【讨论】:

  • +1 我不知道 NOLOCK 有时可能是一件坏事。让我检查不同的方法来验证锁定可能发生的位置。谢谢。 GBN。
【解决方案2】:

我不知道有任何此类全局设置。恕我直言,即使存在,也几乎没有理由使用它。

但是,您可以设置隔离级别来控制单个事务是否能够读取其他事务对数据所做的更改。这是通过

SET TRANSACTION ISOLATION LEVEL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多