事务四个特性ACID之一:隔离性(isolation)
隔离性有四个隔离级别:
1) read uncommitted 读未提交
2) read committed 读已提交
3) repeatable read 可重复读
4) serializable 串行化
read committed 读未提交(级别最低)
1) 事务A和和事务B,事务A未提交的数据,事务B可以读取
2) 这里读取到的数据可以叫做“脏数据”戒“脏读 Dirty Read”
3) 读未提交隔离级别最低,这种级别一般叧在理论上存在,数据库默认隔离级别一般都高于该隔离
级别;
read committed 读已提交
1) 事务A和事务B,事务A提交的数据,事务B才可读取到;
2) 该隔离级别高于“读未提交”级别
3) 换句话说:对方事务提交之后的数据,当前事务才可读取到。
4) 该隔离级别可以避免脏数据;
5) 该隔离级别能够导致“不可重复读取”
6) Oracle数据库管理系统默认隔离级别为“可重复读”
repeatable read 可重复读
1) 事务A和事务B,事务A提交之后的数据,事务B读取不到
2) 事务B是可重复读到数据的
3) 这种隔离级别高于“读已提交”
4) 换句话说,对方提交之后的数据,还是读取不到
5) 这种隔离级别可以避免“脏读和不可重复读”,达到“重复读取”;
6) MySQL数据库管理系统默认隔离级别为:可重复读
7) 虽然可以达到“可重复读”效果,但是会导致“幻象读”
serializable 串行化
1) 事务A和事务B,事务A在操作数据库表中数据的时候,事务B叧能排队等待;
2) 这种事务隔离级别一般很少使用,吞吐量太低,用户体验不好;
3) 这种隔离级别可以避免“幻象读”,每一次读取都是数据库表中真实的记录;
4) 事务A和事务B不再并发;