MySQL|事务介绍

MySQL [字体···] [宽度···]

区别于 MyISAM,InnoDB 支持事务,使其成为了 MySQL 的默认存储引擎,也是大多数 OLTP 系统的首选存储引擎。

什么是事务

事务是包含的一个或一组数据库操作,也就是 SQL,这些操作要么都完成也么都失败。

事务的特性

事务的特性是 ACID。

  • A(Atomic)原子性:一个操作小到不能再被分割,此一经操作执行不能被中断,即可以说该操作具有原子性或不可分割。
  • C(Consistency)一致性:数据更新前后都是正确的
  • I(Isolation)隔离性:事务之间不能相互看到
  • D(Durability)持久性、持续性:事务执行完毕,对数据的修改是永久的,不会因为意外情况丢失。

在 MySQL 中 redo log 保证了持久性,undo log 可以做到原子性,MVCC+read view 实现了隔离性,其他三种特性保证了一致性。

事务的隔离级别

  • 读未提交:一个事物还未提交,它做的改变能被别的事物看到
  • 读已提交:一个事物提交之后,它做的变更才能被看到
  • 可重复读:一个事物执行过程中的数据,总是跟启动事物的时候看到的相同。
  • 串行化:对同一行数据,“读”加“读锁”,“写”加“写锁”,当出现读写锁冲突的时候,后一个事务要等待前一个事务完成才能执行。

(未完待续…)