MySQL数据库的隔离级别

问题:

innodb ,如果一个session A开启事务读一条数据,另一个session B开启事务更新这条数据,那么B能够顺序提交吗?A又读到的是什么值呢?

MySQL默认情况下,答案为:B可以立即更改这个记录,但是A始终都读的是B修改前的数据,即使B已经提交了。

A只有提交了之后,再select,就看到B更新之后的数据了



MySQL有四种隔离级别:

1、未提交读

就是可以读到别人未提交的数据,显然,这个隔离级别最低,而且完全没意义,没实现真正的任何隔离!

2、提交读

事务只能读取到别人提交过了的数据,这个是oracle的默认隔离级别,应用到上面的案例,那么当B提交后,A能够立即读取到B所提交的数据,不管A是否已经提交。

3、可重复读

可重复读的意思就是,即使别人提交了新的记录,当前连接依然读到的是当前事务开始时的记录,也就是和当前事务开始时重复的,一样的值。MySQL默认就是该级别,也就是上面这个案例所展示的样子

4、串行化

这个级别最严,所有的读和写都会相互互斥,等待对方完成。应用到上面的案例,B将没办法更新记录,除非A提交或者回滚。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值