跳至主要內容

事务理论 - ACID

张启忻大约 2 分钟

事务理论 - ACID

提示

事务的四个基本特性: Atomicity(原子性) :事务是一个不可分割的整体,事务内所有操作要么全做成功,要么全失败。 Consistency(一致性) :务执行前后,数据从一个状态到另一个状态必须是一致的(A向B转账,不能出现A扣了钱,B却没收到)。 Isolation(隔离性) : 多个并发事务之间相互隔离,不能互相干扰。 Durability(持久性) :事务完成后,对数据库的更改是永久保存的,不能回滚。

什么是ACID

一个事务有四个基本特性,也就是我们常说的(ACID):

  1. Atomicity(原子性) :事务是一个不可分割的整体,事务内所有操作要么全做成功,要么全失败。

  2. Consistency(一致性) :务执行前后,数据从一个状态到另一个状态必须是一致的(A向B转账,不能出现A扣了钱,B却没收到)。

  3. Isolation(隔离性) : 多个并发事务之间相互隔离,不能互相干扰。

  4. Durability(持久性) :事务完成后,对数据库的更改是永久保存的,不能回滚。

ACID靠什么保证的呢?

以MySQL为例:

A原子性 由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql

C一致性 一般由代码层面来保证

I隔离性 由MVCC来保证

D持久性 由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,事务提交的时候通过redo log刷盘,宕机的时候可以从redo log恢复