数据库系统原理:ACID的作用以及实现原理

  • 数据库事务:构成单一逻辑工作单元的操作集合

    • 数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体
    • 构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部不执行
    • 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,数据库总能保持一致性状态
    • 以上即使在数据库出现故障以及并发事务存在的情况下依然成立
  • 事务的ACID特性

    • 原子性:事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。
    • 原子性实现原理:
      image
    • 一致性:事务开始前和结束后,数据库的完整性约束没有被破坏,都是合法的数据状态。比如A向B转账,不可能A扣了钱,B却没收到。
      image
    • 隔离性:并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。
      image
      image
    • 持久性:事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。
      image
  • 在事务的ACID特性中,一致性是事务的根本追求,而对数据库一致性的破坏主要来自两个方面:

    • 事务的并发执行
    • 事务故障或系统故障
  • 如何避免数据库一致性被破坏

    • 并发控制技术:保证了事务的隔离性,使数据库的一致性不会因为并发执行被操作
    • 日志恢复技术:保证了事务的原子性,使数据库的一致性不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。
      image
原文地址:https://www.cnblogs.com/xiaobaizzz/p/12304293.html