MySQL|事务介绍
区别于 MyISAM,InnoDB 支持事务,使其成为了 MySQL 的默认存储引擎,也是大多数 OLTP 系统的首选存储引擎。
什么是事务
事务是包含的一个或一组数据库操作,也就是 SQL,这些操作要么都完成也么都失败。
事务的特性
事务的特性是 ACID。
- A(Atomic)原子性:一个操作小到不能再被分割,此一经操作执行不能被中断,即可以说该操作具有原子性或不可分割。
- C(Consistency)一致性:数据更新前后都是正确的
- I(Isolation)隔离性:事务之间不能相互看到
- D(Durability)持久性、持续性:事务执行完毕,对数据的修改是永久的,不会因为意外情况丢失。
在 MySQL 中 redo log 保证了持久性,undo log 可以做到原子性,MVCC+read view 实现了隔离性,其他三种特性保证了一致性。
事务的隔离级别
- 读未提交:一个事物还未提交,它做的改变能被别的事物看到
- 读已提交:一个事物提交之后,它做的变更才能被看到
- 可重复读:一个事物执行过程中的数据,总是跟启动事物的时候看到的相同。
- 串行化:对同一行数据,“读”加“读锁”,“写”加“写锁”,当出现读写锁冲突的时候,后一个事务要等待前一个事务完成才能执行。
(未完待续…)