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

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
发布了21 篇原创文章 · 获赞 7 · 访问量 1408

猜你喜欢

转载自blog.csdn.net/weixin_37647596/article/details/103915295