什么是数据库事务?讲一下事务的 ACID 特性?【02.20 - 30天面试题挑战】

什么是数据库事务?

  • 简单来说:事务通常是由一个或一组SQL组成的,组成一个事务的SQL一般都是一个业务操作,例如下单业务:「扣库存数量、增加订单详情记录、插入物流信息」,这一组SQL就可以组成一个事务。
  • 事务是由 MySQL 的引擎来实现的。
  • InnoDB 引擎它是支持事务的,MySQL 原生的 MyISAM 引擎就不支持事务。

讲一下事务的 ACID 特性?

  1. 原子性(Atomicity) 一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节,而且事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样

    买一件商品,购买成功时,则给商家付了钱,商品到手;购买失败时,则商品在商家手中,消费者的钱也没花出去。

  2. 一致性(Consistency) 是指事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。

    用户 A 和用户 B 在银行分别有 800 元和 600 元,总共 1400 元,用户 A 给用户 B 转账 200 元,分为两个步骤,从 A 的账户扣除 200 元和对 B 的账户增加 200 元。一致性就是要求上述步骤操作后,最后的结果是用户 A 还有 600 元,用户 B 有 800 元,总共 1400 元,而不会出现用户 A 扣除了 200 元,但用户 B 未增加的情况(该情况,用户 A 和 B 均为 600 元,总共 1200 元)。

  3. 独立性/隔离性(Isolation) 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。

    消费者购买商品这个事务,是不影响其他消费者购买的。

  4. 持久性(Durability) 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP