gpt4 book ai didi

sql-server - SQL Server Read Committed 隔离级别是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 00:22:11 25 4
gpt4 key购买 nike

我在 MSDN 文档中发现了两个关于 ReadCommitted 工作原理的恕我直言不一致的描述:

  1. https://msdn.microsoft.com/en-us/library/ms173763.aspx

    指定语句不能读取已修改但未被其他事务提交的数据。

  2. https://technet.microsoft.com/en-us/library/aa259216%28v=sql.80%29.aspx指定在读取数据时保持共享锁以避免脏读,...

我很困惑:在 ReadCommitted 的情况下,SQL Server 是否在您READWRITE 未提交数据时放置锁?请明确谁知道

最佳答案

始终写入 X 锁。总是。这样可以保证回滚有效。回滚需要已知且稳定的数据。

关于读取:RC 保证没有未提交的写入对 RC 读取器可见。 RC 可以被认为是对正在读取的数据进行短暂的 S 锁。不过,有一个异常(exception):SQL Server 有一项优化,它不会对未修改页面上的行采用 S 锁。这意味着您可以读取 RC 下在其他事务中被 X 锁定的行(!)。这很好地履行了不读取未提交数据的约定。

示例:如果有一个 writing tran 修改了数据库的任何子集,则可以 100% 确定 RC 读者在作者提交之前不会察觉到这些更改。

RC 的保证非常薄弱,通常只能在您基本上不关心数据一致性的情况下使用。

关于sql-server - SQL Server Read Committed 隔离级别是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336827/

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