MySQL提供多种事务隔离级别,可以按照不同的场景进行设置,从而达到目的。以下内容就各种事务隔离级别进行简单梳理和总结,如果有不对或者不完善的地方,大家可以指出。
READ UNCOMMITED(读未提交)
允许事务读取其他事务未提交的数据修改,属于最低级别。
该级别下可能导致脏读、不可重复读和幻读问题。
READ COMMITED(读已提交)
允许事务只能读取其他事务已经提交的数据修改。
该级别下避免了脏读,但是会出现不可重复读和幻读问题。
REPEATABLE READ(可重复读)
保证同一个事务多次读取数据的一致性。其他并发事务对数据的修改对当前事务时不可见的,避免了脏读和不可重复读,但是会产生幻读问题。
SERIALIZABLE(串行化)
最高级别的隔离级别,强制事务串行执行,避免了脏读、不可重复读和幻读问题
总结
1.以上事务级别按照数据一致性排序是由低到高,但是按照并发性能排序是由高到低。
2. 关于不可重复读和幻读问题说明:
- 不可重复读:指同一个事务内多次读取数据会出现不一致,重点强调数据的修改。
- 幻读:指同一个事务内按照相同查询条件获取到的数据不一致,重点强调数据的插入和删除。