事务四大特性
- 原子性(Atomicity)
指必须是一个原则的操作序列单元,事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败。
- 一致性(Consistency)
指事务必须使数据库从一个一致性状态到另一个一致性状态
- 隔离性(Isolation)
指在并发环境中,事务是互相隔离的,一个事务的执行不能被其他事务干扰,各个事务有完整的数据空间。
- 持久性(Duration)
指事务一旦提交后,数据库中的数据必须被永久的保存下来。
事务四种隔离级别
读数据问题:
- 脏读:读到了脏数据,即无效数据。
- 不可重复读:同一个事务多次相同查询返回结果不一样。
- 幻读:一个事务内多次查询返回结果不一样。
不可重复读对应的时修改,幻读对应的时插入操作,幻读是不可重复读的一种场景。
- Read uncommitted(读未提交)
事务最小限度隔离,就是一个事务可以读取另一个未提交事务的数据。
- Read commotted(读已提交)
事务可以看到其他事务对数据的修改,就是一个事务要等另一个事务提交后才能读取数据。
该隔离级别可以解决脏读问题。
- Repeatable read(重复读)
在开始读取数据时(事务开启时),不再允许修改操作。
该隔离级别可以解决不可重复读问题。
- Serializable(序列化、串行化)
事务的最高隔离级别。在此级别下,事务串行执行。可以避免脏读、不可重复读、幻读等现象,但是效率低下。
mysql默认隔离级别是Repeatable read可重复读。