mysql 事物默认隔离模式 Read uncommitted - 脏读

本文通过一个生动的例子解释了数据库中脏读的概念,即一个事务读取到了另一个未提交事务的数据。这种情况可能导致数据不一致性和错误的业务判断。文章进一步介绍了Readcommitted隔离级别如何避免脏读,确保事务只读取已提交的数据。

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

1
Read uncommitted: 顾名思义,就是一个事务可以读取另一个未提交事务的数据。
事例:老板要给程序员发工资,程序员的工资是3.6/月。但是发工资时老板不小心按错了
数字,按成3.9/月,该钱已经打到程序员的户口,但是事务还没有提交,就在这时,程
序员去查看自己这个月的工资,发现比往常多了3千元,以为涨工资了非常高兴。
但是老板及时发现了不对,马上回滚差点就提交了的事务,将数字改成3.6万再提交。

分析:实际程序员这个月的工资还是3.6万,但是程序员看到的是3.9万。
他看到的是老板还没提交事务时的数据。这就是脏读。

解决:Read committed!读提交就能解决脏读问题
	***两个客户端按顺序 一起按顺序操作;
实例:
	客户端1:(程序员)
		mysql:
			select @@transaction_isolation;-- 查看事物默认隔离模式
			set session transaction isolation level read uncommitted;--设置隔离模式
			start transaction; -- 开启
			
			1.begin;
			2.select news_num FROM lwl_category_industry WHERE industry_id = 12
				打印结果:3.65.select news_num FROM lwl_category_industry WHERE industry_id = 12
				打印结果:3.9;(脏读)
			8.select news_num FROM lwl_category_industry WHERE industry_id = 12
				打印结果:3.6;

	客户端2:(老板)
		mysql:
			select @@transaction_isolation;-- 查看事物默认隔离模式
			set session transaction isolation level read uncommitted;--设置隔离模式
			start transaction; -- 开启
			
			3.begin;
			4.update lwl_category_industry set news_num = 3.9 where  industry_id = 12;#老板并为提交 但是员工查看到工资 变成 3.9,然后老板发现打错了,回滚数据
			6.rollback;
			7.select news_num FROM lwl_category_industry WHERE industry_id = 12
				打印结果:3.6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值