gpt4 book ai didi

sql-server - 是否可以在 SQL Server 中强制行级锁定?

转载 作者:行者123 更新时间:2023-12-01 17:48:57 24 4
gpt4 key购买 nike

我可以了解如何关闭 SQL Server 中的行级和页级锁定,但我找不到强制 SQL Server 使用行级锁定的方法。有没有办法强制 SQL Server 使用行级锁定而不使用页级锁定?

最佳答案

您可以使用 ROWLOCK 提示,但据我所知,如果资源不足,SQL 可能会决定升级它

From the doco :

ROWLOCK Specifies that row locks aretaken when page or table locks areordinarily taken. When specified intransactions operating at the SNAPSHOTisolation level, row locks are nottaken unless ROWLOCK is combined withother table hints that require locks,such as UPDLOCK and HOLDLOCK.

Lock hints ROWLOCK, UPDLOCK, AND XLOCKthat acquire row-level locks may placelocks on index keys rather than theactual data rows. For example, if atable has a nonclustered index, and aSELECT statement using a lock hint ishandled by a covering index, a lock isacquired on the index key in thecovering index rather than on the datarow in the base table.

And finally这对 SQL Server 2005 中的锁升级进行了相当深入的解释,该锁升级在 SQL Server 2008 中进行了更改。

还有非常深入的:Locking in The Database Engine (在线书籍中)

所以,总的来说

UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93

应该没问题,但根据服务器上的索引和负载,它可能最终升级为页面锁定。

关于sql-server - 是否可以在 SQL Server 中强制行级锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com