gpt4 book ai didi

sql-server - NOLOCK还是不NOLOCK,这就是问题

转载 作者:行者123 更新时间:2023-12-02 07:23:37 28 4
gpt4 key购买 nike

这实际上更多的是一个讨论,而不是一个关于 nolock 的具体问题。

我最近接管了一个应用程序,几乎每个查询(而且有很多查询)都有 nolock 选项。现在我对 SQL Server 还很陌生(使用 Oracle 已有 10 年),但我发现这非常令人不安。所以这个周末我正在和我的一位 friend 交谈,他经营着一个相当大的电子商务网站(为了保护罪人,名字将被隐去),他说他必须用他所有的 SQL 服务器来这样做,因为他总是会陷入僵局。

这只是 SQL Server 的巨大缺陷吗?这只是数据库设计中的一个失败吗(我的不是第三级,但它接近)有人在没有无锁的情况下运行 SQL Server 应用程序吗? Oracle 通过更宏大的记录锁可以更好地处理这些问题。

SQL Server 是否无法处理大负载?有没有比读取未提交的数据更好的解决方法?我很想听听人们的想法。

谢谢

最佳答案

SQL Server 在 SQL Server 2005 中添加了快照隔离,这将使您仍然可以读取最新的正确值,而无需等待锁定。 StackOverflow 也使用快照隔离。快照隔离级别或多或少与 Oracle 使用的相同,这就是死锁在 Oracle 机器上并不常见的原因。请注意,如果启用它,要有足够的 tempdb 空间

来自在线图书

When the READ_COMMITTED_SNAPSHOT database option is set ON, read committed isolation uses row versioning to provide statement-level read consistency. Read operations require only SCH-S table level locks and no page or row locks. When the READ_COMMITTED_SNAPSHOT database option is set OFF, which is the default setting, read committed isolation behaves as it did in earlier versions of SQL Server. Both implementations meet the ANSI definition of read committed isolation.

关于sql-server - NOLOCK还是不NOLOCK,这就是问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587276/

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