mysql隔离级别

一、数据库的隔离级别

数据库的隔离级别脏读不可重复读幻读
读取未提交(Read Uncommittied)
读取已提交(Read committed)×
可重复读(Repeated Read)××
序列化(serializable)×××

二、表现案例:

1.读未提交在这里插入图片描述
2.读取已提交
在这里插入图片描述
3.可重复读
在这里插入图片描述
在这里插入图片描述

三、实现原理:

1.Read uncommitted:

1.事务对当前读的数据不加锁;
2.事务在更新数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束释放。

表现:
1、事务1读取记录时,事务2可以对这条记录读取,更新;当事务2对该记录更新时,事务1再次读取该记录,能读到事务2 对这条记录修改的版本,即使事务2未提交;
2、事务1更新某一行记录时,事务2不能对这条记录做更新,直到事务1结束。

2.Read committed :

1.事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行立即释放该行级共享锁;
2.事务在更新某数据的瞬间(发生更新的瞬间),必须先对其加行级排它锁,直到事务结束才释放。

表现:
1、事务1读取某行数据时,事务2也能对这条记录进行读取,更新;当事务2对该记录更新时,事务1再次读取该记录,读取到的只能是对其更新前的版本;
2、事务1更新某行记录时,事务2不能对这行记录更新,直到事务1结束。

3.Repeated Read :

1.事务在读取某数据的瞬间(开始读取的瞬间),必须先对其加行级共享锁,直到事务结束时才释放;
2.事务在更新数据的瞬间(就是发生更新的瞬间),必须先对其加行级排他锁,直到事务结束释放。

表现:
1、事务1读取某行记录时,事务2也能对这条记录进行读取,更新;事务2对该记录进行更新时,事务1再次读取,读取到的仍然是第一次读取的那个版本;
2、事务1更新某行记录时,事务2不能对这行记录做更新,直到事务1结束。

4.serializable:

1.事务在读取数据时,必须先对其加表级共享锁,直到事务结束才释放;
2.事务在更新数据时,必须先对其先加表级排它锁,直到事务结束才释放。

表现:
1、事务1正在读取A表中的记录,则事务2也能读取A表,但不能对A表新增,更新,删除,直到事务结束;
2、事务1正在更新A表的记录,事务2不能读取A表的任意记录,更不能对A表新增,更新,删除,直到事务1结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值