代码之家  ›  专栏  ›  技术社区  ›  flesh

SQL Server事务/并发混淆-必须始终使用表提示吗?

  •  2
  • flesh  · 技术社区  · 14 年前

    2 回复  |  直到 14 年前
        1
  •  2
  •   Mitch Wheat    14 年前

    您应该仅将查询提示作为最后手段使用,即使是在专家分析之后。在某些情况下,它们会导致查询执行不好。所以,除非您真的知道自己在做什么,否则请避免使用查询提示。

    每次执行查询时(除非指定了NOLOCK),都会自动发生(各种类型的)锁定。默认事务隔离级别为 READ COMMITTED

    Understanding Locking in SQL Server

        2
  •  1
  •   Gennady Vanin Геннадий Ванин Mikael Svenson    14 年前

    “能否锁定事务之外的行/表(即在普通查询中)

    您最好理解,在SQL Server中没有普通的查询或操作,它们都是事务性的,没有任何异常。这就是酸性的实现方式,参见,例如,[1]。如果客户端工具或开发人员未以交互方式使用BEGIN transaction和COMMIT/ROLLBACK显式指定事务,则使用隐式事务。

    此外,事务不是锁定/锁定接合的同义词。有很多机制可以在不加锁的情况下控制并发性(例如,版本控制)。以及读取未提交事务的“隔离”(在本例中,没有任何隔离)级别根本无法控制它。

    更新2:

    为了锁定某些内容,必须始终使用表提示吗?

    到目前为止,事务隔离级别不是读未提交或行版本控制(快照)隔离级别之一,例如,默认读提交或设置者,例如。,

    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE  
    

    [一]
    保罗·S·兰德尔。了解SQL Server中的日志记录和恢复
    什么是日志记录?
    http://technet.microsoft.com/en-us/magazine/2009.02.logging.aspx#id0060003
    [二]

    http://en.wikipedia.org/wiki/Isolation_(database_systems )

    更新:

    如果我被禁止进入meta.stackoverflow.com,我在哪里可以问这个问题?