MYSQL InnoDB 的隔离级别
- 读未提交 (Read uncommitted)
就是一个事物能够看到其他事物尚未提交的修改,这是最低的隔离界别,允许脏读出现
- 读已提交 (Read committed)
事务能够看到的数据都是事务已经提交的修改,也就是保证不会看到任何中间性状态,当然脏读也不会出现。读已提交仍然为较低级别的隔离,并不能保证再次读取时能够获取同样的数据,也就是允许其他事物并发修改数据,允许不可重复度和幻读出现。
- 可重复读 (Repeatable reads)
保证同一个事物多次读取的数据是一致的,这是MYSQL InnoDB引擎默认的隔离级别,但是和一些其他数据库实现不同的是,可以简单任务MYSQL在可重复读级别不会出现幻读。
- 串行化 (Serializable)
并发事物之间是串行化的,通常意味着读区需要获取共享读锁,更新需要获取排他写锁,如果SQL使用了WHERE语句,还会获取区间锁(MYSQL 以GAP锁形式实现,可重复读级别中默认是也会使用), 这是最高的隔离级别