day0303 隔离级别以及对应的并发问题

隔离级别(默认是RR,可重复读)

读未提交(read uncommitted) 允许读取未提交的数据。

读已提交(read committed) 只允许读取已提交数据,但不要求可重复读,比如在事务两次读取一个数据项周期间,另一个事务更新了该数据项并提交。

可重复读(repeatable read) 只允许读取已提交的数据,而且在一个事务两次读取一个数据项期间,其他事务不得更新该数据。但该事务不要求与其他事务可串行化。比如,在两次统计查询中,另一个事务可以插入一些记录,当这些记录中有符合查询条件的,就会产生幻读。还是会出现幻读问题

可串行化(serializable) 看起来事务就好像是串行执行的一样。一个事务结束后,另一个事务才开始执行。

隔离性依次提高:

read uncommitted →read committed→repeatable read→serializable

所有隔离级别都不允许脏写(dirty write)

即如果有一个数据项已被另一个尚未提交或中止的事务写入,则该事务不能对该数据项执行写操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDMCBpt2-1619856631855)(隔离级别以及对应的并发问题day0303/image-20210501134232582.png)]

查看当前隔离级别

select @@session.transaction_isolation;

设置当前隔离级别为读未提交

set session transaction isolation level read uncommitted;

如何演示并发的问题

1,脏写: 左边update 右边也update

2,脏读:左边update(不要提交),右边进行select

3,不可重复读:左边先select,右边update,左边select

4,幻读:左边select 右边insert 左边select

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值