gpt4 book ai didi

sql-server - SQL Server - 是否有名为 'dirty write' 的东西?

转载 作者:行者123 更新时间:2023-12-02 23:01:49 27 4
gpt4 key购买 nike

SQL Server 是否允许一个事务修改当前正在被另一个事务修改但尚未提交的数据?这在任何隔离级别下都可能吗?假设是 READ UNCOMMITTED,因为这是限制最少的?或者它能完全阻止这种情况的发生吗?如果可能的话,您会称其为“脏写”吗?

最佳答案

任何提供事务和事务原子性的 RDBMS 都不允许脏写。

SQL Server必须确保所有写入都可以回滚。这甚至适用于单个语句,因为即使单个语句也可能导致多次写入并运行数小时。

想象一行已写入但需要回滚。但与此同时,已经提交的该行发生了另一次写入。现在我们无法回滚,因为这会违反为其他事务提供的持久性保证:写入将会丢失。 (如果要回滚的行是其写入的几个行之一,它也可能违反为其他事务提供的原子性保证)。

唯一的解决方案是使用 X 锁始终稳定已写入但未提交的数据。

SQL Server 绝不允许脏写或丢失写。

关于sql-server - SQL Server - 是否有名为 'dirty write' 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303092/

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