gpt4 book ai didi

sql-server - 为什么 READ_COMMITTED_SNAPSHOT 默认情况下未启用?

转载 作者:行者123 更新时间:2023-12-02 03:27:14 24 4
gpt4 key购买 nike

简单的问题?

为什么READ_COMMITTED_SNAPSHOT默认情况下未启用?

我猜测是向后兼容性、性能还是两者兼而有之?

[编辑]请注意,我感兴趣的是与 READ_COMMITTED 隔离级别相关的效果,而不是快照隔离级别。

为什么这是一个重大更改,因为它持有较少的锁,并且仍然不读取未提交的行?

最佳答案

Turning snapshot on by default would break the vast majority of applications

我不清楚它是否会破坏“绝大多数”应用程序。或者,它是否会以难以识别和/或难以解决的方式破坏许多应用程序。 SQL Server 文档指出,READ COMMITTED 和 READ COMMITTED SNAPSHOT 均满足 READ COMMITTED 的 ANSI 定义。 (此处说明:http://msdn.microsoft.com/en-us/library/ms189122.aspx)因此,只要您的代码不依赖于超出字面 ANSI 要求的行为之外的任何内容,理论上就可以了。

问题在于,ANSI 规范并没有涵盖人们通常认为的脏读、模糊/不可重复读等实际含义的所有内容。而且,在READ COMMITTED SNAPSHOT 下可能会发生一些在READ COMMITTED 下不会发生的异常情况(ANSI 定义所允许的)。有关示例,请参阅http://www.jimmcleod.net/blog/index.php/2009/08/27/the-potential-dangers-of-the-read-committed-snapshot-isolation-level/ .

另请参阅http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/d1b3d46e-2642-4bc7-a68a-0e4b8da1ca1b .

有关隔离级别之间差异的深入信息,请从 http://www.cs.umb.edu/cs734/CritiqueANSI_Iso.pdf 开始(在撰写本文时,READ_COMMITTED_SNAPSHOT 尚未出现,但其他级别已包含在其中)。

关于sql-server - 为什么 READ_COMMITTED_SNAPSHOT 默认情况下未启用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1363444/

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