gpt4 book ai didi

sql-server - 我的 CREATE View 查询中不需要锁定吗

转载 作者:行者123 更新时间:2023-12-02 11:08:41 24 4
gpt4 key购买 nike

我正在 MS SQL Server 上创建 View 。我对 MS SQL 没有太多接触,并且不太熟悉 NO LOCK 提示。我明白它的作用,但我不知道我是否需要在我的情况下使用它。有人问我是否应该包含它,但我不知道。

在我用来创建 View 的所有查询之后,我是否需要添加“NO HINT”?或者这会对用户查询 View 本身产生任何影响吗?用户是否应该向针对 VIEW 的查询添加 NO LOCK?

任何有关最佳方法的指导和任何说明都将受到赞赏!

最佳答案

我先回答你的问题。

最好在外部 View 上设置 NOLOCK 提示,而不是在 View 中的表上设置 NOLOCK 提示。

例如

select * from vwTest with (nolock)

set transaction isolation level read uncommitted
select * from vwTest

通过这种方式,您作为创建者可以满足更广泛的用户群的需求,这些用户可能在 SQL 方面的经验与您一样,也可能不如您。通过不在 View 中封装 NOLOCK 提示,可以鼓励其他开发人员真正考虑他们希望如何以安全有效的方式检索数据。

现在有关 NOLOCK 的更多信息。如果您 100% 确定基础数据不再发生变化,那么这是一个很好的技巧,一个很好的例子是 ETL 系统完成当天数据的加载。它在只读报告系统中也很方便,您可以再次确定报告运行之间没有数据移动。

否则,不建议在您的系统中使用它。如果您不真正理解其含义,则弊大于利。

NOLOCK可能造成的损害请引用以下链接: Previously committed rows might be missed if NOLOCK hint is used

关于sql-server - 我的 CREATE View 查询中不需要锁定吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180276/

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