一、事物
概述:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
二、事物的ACID属性
- 原子性:捆绑式运行
- 一致性(consistency):必须使数据库从一个一致性状态变化到另外一个一致性状态。
- 隔离性:事物操作不影响其他事物,各个事物之间不能互相干扰
- 持久性:事物一旦改变,对数据库中数据的改变就是永久性的
三、并发问题
- 脏读:一个事务读取到了另外一个事务未提交的数据
- 不可重复读:同一个事务中,多次读取到的数据不一致
- 幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据
四、隔离级别
- read uncommitted:都不能避免
- read committed:可以避免脏读
- repeatable read:可以避免脏读、不可重复读和一部分幻读
- serializable:可以避免脏读、不可重复读和幻读
注意:隔离级别从小到大安全性越来越高,但是效率越来越低!!!!
五、设置隔离级别
- set session|global tr