【问题标题】:How do databases provide atomicity?数据库如何提供原子性?
【发布时间】:2020-07-30 19:39:19
【问题描述】:

假设我有一个交易应该将列值增加 100。我可以使用一个简单的交易来实现这一目标

Begin
Update table
set col1 = col1+100
where col2=val
End

我想知道数据库如何提供原子性。假设我们写入磁盘后出现电源故障,但已收到交易完成的确认。我们可能认为写入不成功,但确实成功了,而且我们最终可能会进行交易。数据库如何防范此类情况?

【问题讨论】:

    标签: database transactions


    【解决方案1】:

    在将更改写入磁盘之前,数据库首先会写入日志文件。此日志文件将在崩溃后的“实例恢复”期间引用。

    日志记录被设计为即时的(我们使用更快的磁盘来写入日志) 在写入数据文件时,是“惰性”完成的,即每当写入处理器空闲时。

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多