对ACID的深层解读

  • A:Atomieity
    通常,原子指不可分解为更小粒度的东西,该术语在计算机的不同领域里面有着相似但却微妙的差异。在多线程并发编程中,如果某线程执行一个原子操作,这意味着其他线程是无法看到该结果的中间结果,在数据库中,更精确的特征是:在出错时中止事务,并将部分完成的写入全部丢弃,也许可中止性比原子性更为准确

  • C:Consistency
    主要指对数据有特定的预期状态,任何数据更改必须满足这些状态约束。但这种一致性本质上要求应用层来维护状态一致,这其实不是数据库可以保证的事情:即如果提供的数据修改违背了恒等条件,数据库很难检测进而阻止该操作(数据库可以完成针对某些特定类型的恒等约束检查,例如使用外键约束或唯 性约束。但通常主要靠应用程序来定义数据的有效/无效状态,数据库主要负责存储)。

  • I: Isolation
    同时运行的事务不应相互干扰,经典的数据库教材把隔离定义为可串行化。实践中,由于性能问题很少使用串行化隔离,只提供了比串行化更弱的保证。

  • D: Durability
    对单节点数据库,持久性通常意味着数据已被写入非易失性存储设备。对于支持远程复制的数据库,持久性则意味着数据已成功复制到多个节点。其实不存在完美的持久性。例如,所有的硬盘和所有备份如果被同时销毁了,那么数据库也无能为力

posted @ 2019-12-09 14:33  james_cai  阅读(252)  评论(0)    收藏  举报