【问题标题】:Locks in SQL Server - Update/SelectSQL Server 中的锁定 - 更新/选择
【发布时间】:2014-01-07 11:56:10
【问题描述】:

我是 SQL Server 的新手,我不确定这里的锁定机制是如何工作的。请帮忙

问题:需要删除表中近 5 百万条记录。网站非常频繁地从该表中提取数据。

我的理解是:删除只会锁定行,因此这不应该影响网站。是对的吗?那么,如果网站试图拉取正在被删除的记录,会发生什么?我知道我听起来很业余,但我非常需要了解这些基础知识。

能否请一位大师分享一个链接,我可以在其中阅读有关 SQL Server 中各种锁的信息

【问题讨论】:

  • 不是专家,但我认为您会发现,如果您要删除这么多数据,SQL Server 可能会锁定整个表。

标签: sql-server-2012 locks


【解决方案1】:

是的,SQL Server 在它插入/更新/删除的那些行上使用行级锁 - 直到某一点。

该点大约是 5000 行 - 如果您尝试在单个事务中更新或删除 超过 5000 行,则 SQL Server 将执行 锁定升级并在有问题的整个表上放置一个排他锁(SQL Server锁定页面 - 它会升级到整个表 - 或分区,如果表是分区的 - 直接来自行级锁)。

从那时起,在删除事务提交(或回滚)之前,该表上甚至不允许有 SELECT

【讨论】:

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