4种事务的隔离级别
事务ACID特性,其中I代表隔离性(Isolation)。 什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离。 一个事务怎么会干扰其他事务呢? 咱们举例子来说明,假设有InnoDB表: t(id PK, name); 表中有三条记录: 1, shenjian 2, zhangsan 3, lisi case 1 事务A,先执行,处于未提交的状态: insert into t values(4, wangwu); 事务B,后执行,也未提交: select * from t; 如果事务B能够读取到(4, wangwu)这条记录,事务A就对事务B产生了影响,这个影响叫做“读脏”,读到了未提交事务操作的记录。 case 2 事务A,先执行: select * from t where id=1; 结果集为: 1, shenjian 事务B,后执行,并且提交: update t set name=xxoo where id=1; commit; 事务A,再次执行相同的查询: select * from t where id=1; 结果集为: 1, xxoo 这次是已提交事务B对事务A产生的影响,这个影响叫做“不可重复读”,一个事务内相同的查询,得到了不同的结果。 case 3 事务A,先执行: