事务的特性
- A:原子性,事务是最小的工作单元,不可再分割。
- C:一致性,构成事务的一组MDL语句要么全部执行成功,要么全部执行失败
- I:隔离性,两个不同的事务之间具有隔离性。多线程情况下会发生。
- D:持久性,对数据的修改操作一定会持久化到硬盘文件中,事务才算执行成功。
四种隔离级别
- 读未提交:一个事务可以读取到另一个事务还没有提交的数据,会导致脏读。
- 读已提交:一个事务只能读到另一个事务已经提交的数据,没有提交的数据读取不到。缺点是不可以重复读。(oracle默认的隔离级别)
- 可重复读:一个事务不能读到另一个事务已经提交的数据,只能对方事务修改前的数据,可以重复读取,会导致幻读。(mysql默认的隔离级别)
- 串行化读:两个事务互斥。效率低,需要事务排队