我是SQL Server的新手,我不确定锁定机制在这里是如何工作的。请帮忙
问题:需要删除表中接近5 mil的记录。一个网站经常从该表中提取数据。
我的理解是:删除只会锁定行,因此这不会影响网站。是对的吗?那么,如果网站试图拉出正在删除的记录会怎么样?我知道我听起来非常业余,但我非常需要了解这些基础知识。
请一位大师请分享一个链接,我可以在其中阅读有关SQL Server中各种锁的内容
答案 0 :(得分:0)
是的,SQL Server在它插入/更新/删除的行上使用行级锁 - 直到某一点。
这一点大致 5000行 - 如果您尝试在单个事务中更新或删除超过 5000行,那么SQL Server将执行锁定升级并在整个表上放置独占锁(SQL Server执行不锁定页面 - 它将升级到整个表 - 或分区,如果表是分区的 - 直接来自行级锁。)
从那时起,在删除事务已提交(或已回滚)之前,该表上不允许更多偶数SELECT
。