MySQL数据库隔离级别-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

MySQL数据库隔离级别

简介: 版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82862214 ...
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82862214

数据库隔离级别用于处理数据库中的数据读写规则

更多精彩

定义

  1. 脏读
    • 事务 A 对数据进行了增删改,但未提交事务,事务 B 可读取到该数据
    • 如果事务 A 进行回滚,则事务 B 读取到的数据是脏数据
  2. 不可重复读
    • 事务 A 中发生了两次读操作
    • 在第一次读操作和第二次读操作之间,事务 B 对该数据进行了修改
    • 导致事务 A 两次读取的数据是不一致的
  3. 幻读
    • 事务 A 对一定范围内的数据进行了修改
    • 事务 B 在这个范围内新增了一条数据
    • 这时事务 A 对这些数据进行的修改会丢失

隔离级别

  1. Read-Uncommitted - Level 0
    • 导致脏读
  2. Read-Committed - Level 1
    • 避免脏读
    • 允许不可重复读和幻读
  3. Repeatable-Read - Level 2
    • 避免脏读
    • 避免不可重复读和幻读
  4. Serializable - Level 3
    • 串行化读,事务只能依次执行
    • 避免脏读
    • 避免不可重复读和幻读
    • 执行效率慢,慎重使用

总结

  1. 隔离级别越高,越能保证数据安全,但对并发性能的影响越大
  2. Oracle 、SqlServer 的默认隔离级别是 Read-Committed
  3. MySQL 的默认隔离级别是 Repeatable-Read

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: