MySQL中readcommitted_mysql事务之提交读(Read Committed)

1,Read Commited定义:

在提交读(READ COMMITTED)级别中,基于锁机制并发控制的DBMS需要对选定对象的写锁(write locks)一直保持到事务结束,但是读锁(read locks)在SELECT操作完成后马上释放(因此“不可重复读”现象可能会发生,见下面描述)。和前一种隔离级别一样,也不要求“范围锁(range-locks)”。

简而言之,提交读这种隔离级别保证了读到的任何数据都是提交的数据,避免读到中间的未提交的数据,脏读(dirty reads)。但是不保证事务重新读的时候能读到相同的数据,因为在每次数据读完之后其他事务可以修改刚才读到的数据。

提交读保证我们读到的数据都是事务提交后的数据,这样子就保证了程序中数据的正确性,在我们的应用中,基本都是使用的Read Commited隔离级别。

2,场景

我们首先设置我们的数据库事务级别为提交读,开启事务1,对student表做更新,但是不对其提交,再开启事务2对数据进行读取。

start TRANSACTION;

select * from student;

update student set name = 'a1' where id = 1;

select * from student;

在该事务中,更新数据后,我们查看student表,其中的数据已经发生了变化。我们开启事务2对数据查询。

select * from student;

在该事务中查询到的student还是旧数据,对事务1进行提交,再在事务2中查询,数据则获取到的为我们最新的数据。

再次期间事务2和事务1中读取数据,事务1未提交时两个读取的数据不一致,可能发生不可重复读。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值