隔离性产生的相关问题
1、丢失更新
多个事务同时修改某行数据,以致于一些事务的修改被丢失
2、脏读
事务A读了事务B未提交的数据
3、不可重复读
事务A读取数据,还没来得及提交,在这个过程中事务B修改了此数据并且已经提交,导致此数据与之前事务A读取的不一致,产生不可重复读。即事务A在两次读数据中间有其他的事务修改了此数据
4、幻读
事务A读某范围的数据记录,两次读之间的时间里有其他事务在这个范围内插入了新的记录,导致事务A读取数据的过程中出现"幻行"
隔离性解决相关的问题
1、不能解决任何问题的隔离级别(读未提交:read uncommitted)
最低的隔离级别,不会解决脏读、不可重复的、幻读的问题
2、解决脏读的隔离级别(读提交:read committed)
事务B未提交的数据对其他事务是不可见的,所以就不会出现事务A读取了事务B未提交的数据,解决了脏读的问题,但是还会产生不可重复读和幻读的问题
3、解决不可重复读的隔离级别(可重复读:repeatable read)
事务A读取数据的时候,看不到事务B修改提交的数据,但是可以看到事务A新增的数据。解决的不可重复读,但是还是没有解决幻读,mysql默认的隔离级别
4、解决幻读的隔离级别(可串行化:serializable)
任何事务都是串行执行