sql – 删除中的ROWLOCK的目的是什么时候应该使用它?

前端之家收集整理的这篇文章主要介绍了sql – 删除中的ROWLOCK的目的是什么时候应该使用它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
例)

何时应该使用这个语句:

DELETE TOP (@count)
FROM ProductInfo WITH (ROWLOCK)
WHERE ProductId = @productId_for_del;

何时应该做:

DELETE TOP (@count)
FROM ProductInfo
WHERE ProductId = @productId_for_del;

解决方法

with(rowlock)是一个提示,指示数据库应该将行锁定在行范围上.这意味着数据库将避免将锁升级到块或表范围.

当只有一行或只有几行将受查询影响时,您可以使用提示,以防止锁定锁定不会被查询删除的行.这将让另一个查询同时读取不相关的行,而不必等待删除完成.

如果您在一个将删除大量行的查询中使用它,则可能会降低性能,因为数据库将尝试避免将锁升级到更大的范围,即使这样更有效.

通常,您不需要向查询添加这样的提示,因为数据库知道要使用什么样的锁.只有在您遇到性能问题的情况下,因为数据库作出了错误的决定,您应该向查询添加这样的提示.

原文链接:https://www.f2er.com/mssql/76065.html

猜你在找的MsSQL相关文章