目录
我们说的事务隔离级别,通常指的是mysql innoDB支持的4种事务隔离级别,也是SQL标准的4种事务隔离级别。
4种事务隔离级别
这4种隔离级别按照隔离级别从低到高分别是未提交读、提交读、可重复读和串行化,具体的说明看下面描述。
read uncommit(未提交读)
事务中的修改,及时没有提交,其他事务也可以看到。
缺点:事务还没提交,而别的事务就已经可以看到修改的结果,也就是脏读。
read commit(提交读)
事务中的修改,需要提交之后,其他事务才可以看到,解决了脏读问题。
这是大多数数据库系统默认的隔离级别。
缺点:只能看到已经完成的事务结果,不能看到正在执行的结果。这种级别会出现读取到旧数据的现象。
repeatable read(可重复读)
该级别解决了脏读的问题,保证了每行记录的结果是一致的。解决了读取旧数据问题。
缺点:读取一条数据可以保证一致性,但是不能保证没有插入新的数据,也就是幻读。
serializable(可串行化)
该级别是最高的隔离级别。通过强制事务串行执行,避免了前面的幻读问题。
缺点:由于大量上锁,导致大量的请求超时。因此性能比较低。在特别需要的情况下才考虑用这个隔离级别。
常见数据库支持情况
| 数据库类型 | 未提交读 | 已提交读 | 可重复读 | 串行化 | 其他说明 |
| mysql-innoDB | 支持 | 支持 | 支持(默认) | 支持 | |
| postgreSQL | 不支持,同已提交读 | 支持(默认) | 不支持,同可串行化 | 支持 | |
| oracle | 不支持,同已提交读 | 支持(默认) | 不支持,同可串行化 | 支持 | 支持只读模式,即不能进行增删改 |
| sql-Server | 支持 | 支持(默认) | 支持 | 支持 | 支持快照模式和以提交读隔离 |

6357

被折叠的 条评论
为什么被折叠?



