说明
MySQL 数据库规范规定了4种隔离级别,用于解决事务并发问题(脏读、不可重复读、幻读(虚读))
| 级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认隔离级别 |
|---|---|---|---|---|---|---|
| 1 | 读未提交 | read uncommitted | 是 | 是 | 是 | |
| 2 | 读已提交 | read committed | 否 | 是 | 是 | Oracle和SQL Server |
| 3 | 可重复读 | repeatable read | 否 | 否 | 是 | MySQL |
| 4 | 串行化 | serializable | 否 | 否 | 否 |
分析
开发中最严重的问题就是脏读,这个问题一定要避免,而关于不可重复读和虚读其实只是感官上的错误,并不是逻辑上的错误,就是数据的时效性,所以这种问题并不属于很严重的错误,如果对于数据的时效性要求不是很高的情况下,我们是可以接受不可重复读和虚读的情况发生的。
安全和性能对比
安全:串行化 > 可重复读 > 读已提交 > 读未提交
性能:串行化 < 可重复读 < 读已提交 < 读未提交
