MySQL的事务隔离级别

MySQL的事务隔离级别

一、事务的并发问题

事务的隔离级别可以用于处理事务的并发问题:

  1. 脏读:事务A进行的时候,读取到了事务B中更新后的数据,事务B最后没提交而是回滚了,那么事务A读到的数据就是脏数据

  2. 不可重复读:事务A进行的时候,事务B在事务A两次查询数据的中间,修改数据并提交了,导致事务A在两次相同的查询中得到的结果不同

  3. 幻读:事务A将表中所有数据的启用标识字段改为0,这时候事务B又插入了一条启用标识为1的字段,事务A表现出来的结果是误以为改漏了一条

    ps:不可重复读和幻读有些类似,幻读侧重于增删,要解决只能通过锁表,不可重复读侧重修改

二、事务隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
读已提交(read-committed)
可重复读(repeatable-read)
串行化(serializable)
  1. 读未提交:事务过程中,查询到的数据,包括其他未提交的事务的修改结果
  2. 读已提交:事务过程中,查询到的数据,包含开启事务后,其他已提交事务的修改结果
  3. 可重复读:事务过程中,查询到的数据,不包含其他已提交事务修改的结果
  4. 串行化:事务过程中,会将表锁住,其他事务无法修改数据,并行效率低下,不建议使用

其中,MySQL数据库的默认隔离级别为可重复读;

spring的aop事务注解默认隔离级别跟从数据库的隔离级别,可以通过Isolation 属性设置

发布了20 篇原创文章 · 获赞 2 · 访问量 3041
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览