版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82862214
数据库隔离级别用于处理数据库中的数据读写规则
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
定义
- 脏读
- 事务 A 对数据进行了增删改,但未提交事务,事务 B 可读取到该数据
- 如果事务 A 进行回滚,则事务 B 读取到的数据是脏数据
- 不可重复读
- 事务 A 中发生了两次读操作
- 在第一次读操作和第二次读操作之间,事务 B 对该数据进行了修改
- 导致事务 A 两次读取的数据是不一致的
- 幻读
- 事务 A 对一定范围内的数据进行了修改
- 事务 B 在这个范围内新增了一条数据
- 这时事务 A 对这些数据进行的修改会丢失
隔离级别
- Read-Uncommitted - Level 0
- 导致脏读
- Read-Committed - Level 1
- 避免脏读
- 允许不可重复读和幻读
- Repeatable-Read - Level 2
- 避免脏读
- 避免不可重复读和幻读
- Serializable - Level 3
- 串行化读,事务只能依次执行
- 避免脏读
- 避免不可重复读和幻读
- 执行效率慢,慎重使用
总结
- 隔离级别越高,越能保证数据安全,但对并发性能的影响越大
- Oracle 、SqlServer 的默认隔离级别是 Read-Committed
- MySQL 的默认隔离级别是 Repeatable-Read