事务的隔离级别以及会出现的问题
SQL标准定义了4类隔离级别(由低到高):
1.Read Uncommitted(读取未提交内容)
会出现的问题:一个事务在对数据进行修改后,另一个事务读取了同一份数据,但因为某些原因修改数据的事务回滚了,另一个事务读到的数据就是错误的,出现了脏读;
2.Read Committed(读取提交内容,解决了出现脏读的问题)
会出现的问题:一个事务在查询数据时另一个修改数据的事务刚好提交,再次查询时,两次查询结果不一样,出现虚读
3.Repeatable Read (可重读,解决虚读问题)
会出现的问题:在一个事务的两次查询中数据笔数不一致,例如:一个事务查询一次数据,在此时另一个事务插入了几条数据,当再次查询时出现了几条之前没有的数据,产生幻读;
4.Serializable (可串行化,解决幻读问题)
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题