关于mysql可重复读的一些问题

前言:

		一直一来都知道mysql的事务操作,但一直都是理论家,
		没有实际操作。今天索性就准备把mysql的几种事务隔离级别练习一下,
		可当练习到Repeatable Read(可重读)发现了一些问题。

一.概念

   这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,
   会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。
   简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,
   当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储
   引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

二.问题

	我一开是是这样验证的,我事务A开始事务,然后查询表,然后直接提交。接着在另一命令行界面
	开始事务b,然后更新数据,提交。然后我再事务A窗口查询操作,发现查询数据更改了,很奇怪。

A:
开启查询事务
B:在这里插入图片描述
A:在这里插入图片描述

	我一开始很气怪,后来查了下。原来事务A开启后,执行查询操作不能直接提交,然后试下了是对的。

A:在这里插入图片描述
B:在这里插入图片描述 最后我仔细查询了资料,原来利用的是MYSQL MVCC 实现机制。具体大家可以继续查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值