03-事务
事务的概念
事务是指一组数据库操作,要么都成功,要么都失败。事务具有四个属性:原子性、一致性、隔离性、持久性。
- 原子性(Atomicity):事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(Durability):持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
事务ACID、隔离级别
- 事务隔离级别,脏读,不可重复读,幻读
- 读未提交(read-uncommitted),是,是,是
- 不可重复读(read-committed),否,是,是
- 可重复读(repeatable-read), 否,否,是
- 串行化(serializable), 否,否,否
总结: RR下,事务在第一个Read操作时,会建立read-view RC下,事务在每次Read操作时,都会建立read-view
事务隔离的实现
undo log版本链, readview的 事务set,min_trx_id,max_trx_id,trx_id_list