事务隔离级别的理解

mysql 支持四种事务隔离级别,每种事务隔离级别都各有优缺点。每隔一个阶段,都会对事务产生新的理解。

1、Read uncommitted 读未提交

指当前事务可以读取到其他事务尚未提交的修改。此时会出现脏读的问题。

2、Read committed 读提交

指当前事务只能读取到其他事务已经提交的修改。此时不会出现脏读的问题,但不能重复读,也就是同一个事务里面不能保证前后读取的数据是一致的。

3、Repeatable read 可重复读(mysql 默认的级别)

指当前事务内每次读取的数据都是一致的,这是因为事务一开启,数据就上了写锁,其他事务不能再修改。此时不能保证幻读,幻读是由于事务并行处理导致的。跟 java 的并发处理一样的道理。而解决幻读的问题,一般交给上层语言,例如 java 的加锁操作,控制并发修改同一条数据。

4、Serializable 序列化

序列化保证所有事务都是顺序执行的,就不会出现幻读的现象。