mysql 8的四种隔离级别

本文详细介绍了MySQL 8中的三种事务隔离级别:read-uncommitted、read-committed和REPEATABLE-READ,通过实例解释了每种级别下不同事务间的可见性和一致性。在read-uncommitted级别,未提交更改可被其他事务看到;read-committed级别只允许查看已提交的数据;而在REPEATABLE-READ级别,事务可以多次读取相同数据,不受其他事务的影响,可能出现幻读现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. read-uncommited

T表中有int kucun字段值为100;
在SessionA中开启事务TransA;
TransA对kucun更改为101;
并select查询,结果为101(现在因为尚未commit,T表中kucun值依旧为100);
此时,SessionB中开启事务TransB;
在TransB中select 查询kucun,值为101.因为可以读取尚未commit的事务中的值,也就是TransA中的kucun;
此时SessionA中TransA commit,则T表中kucun值被持久化为101。

2. read-commited

T表中有int kucun字段值为100;
在SessionA中开启事务TransA;
TransA对kucun更改为101;
并select查询kucun,结果为101(现在因为尚未commit,T表中kucun值依旧为100);
此时,SessionB中开启事务TransB;
在TransB中select 查询kucun,值依旧为100.因为只能读取commit后的事务中的值,也就是说TransA中的kucun值未commit的话,是不能被TransB所看见的,这也对应了read committed 的标题,只能读取commit后的数据值;
此时SessionA中TransA commit,则T表中kucun值被持久化为101。

3. REPEATABLE-READ

T表中有int kucun字段值为100;
在SessionA中开启事务TransA;
select查询kucun,结果为100(此时T表kucun为100);
此时,SessionB中开启事务TransB;
在TransB中select 查询kucun,值为100;
在TransB对kucun更改为200(此时T表kucun为100);
TransB commit(此时T表kucun为200);
TransA中再次select 查询kucun,得到的值为100(此时T表kucun为200);
这个就是可以重复地读取自己事务中的值,不受实际 表 影响,TransA沉浸在自己的世界里,所以也叫幻读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值