MySql的事务隔离级别

MySql的事务隔离级别

事务隔离级别

隔离级别脏读不可重复读幻读
Read Uncommitted
Read committed
Repeatable Read(默认)
Serializable【串行化级别最高】

级别从上往下隔离级别越来越高,性能越来越差。

命令

  • select @@transaction; 【查看事务隔离级别】
  • set [session | global] transaction isolation level {Read Uncommitted | Read committed | Repeatable Read | Serializable} 【设置事务隔离级别】

脏读、不可重复读、幻读的演示

  • 脏读

在这里插入图片描述

​ 可以发现有两个事务正在同时操作数据库,但是两个事务存在干扰,事务一读到了事务二操作后的数据,即张三的金额减了1000,在隔离级别为Read Uncommitted 下。

  • 不可重复读

在这里插入图片描述

​ 在Read committed 的隔离级别下可以解决脏读,当依然存在不可重复读,即在一个事务里两个相同的查询语句查询出来的数据不一样,即在同一个事务中两次查询查询到了其他已经提交的事务对该数据的修改,从而导致查询结果不一样。

  • 幻读

在这里插入图片描述

​ 在Repeatable Read 的隔离级别下可以解决脏读、可重复读,但依然存在幻读,即在一个事务中首先查询时数据不存在,在事务二中插入该数据,而在事务一查询数据为空后,插入该数据显示插入失败,因为在事务二中已经插入,但在事务一查询还是为空且依然插入失败,这就是幻读现象。

  • 串行化隔离级别

串行化隔离级别可以解决脏读、不可重复读、幻读等全部问题,即所有的事务的串行执行,在上一个事务结束后才能执行下一个事务,串行执行。

qiumin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值