mysql数据库的不可重复读是用什么方案解决的?

有人说不可重复读是用行锁来解决的,有人说是用版本号的机制来解决的,到底以哪个为准?为啥

首先,行锁确实部分解决了不可重复读的问题,但是行锁跟版本号没关系.
提问者的问题提的很好,准确的来说:
a. 不可重复读分为2部分:1.快照度 2.当前读
b.行锁+间隙锁 解决了当前读可能会导致的不可重复读的问题
c.mvcc(你可以理解为版本号) 解决了快照读可能会导致的不可重复读的问题.
d.另外补充,mysql的锁和mvcc的设计不单单解决了不可重复读的问题,也解决了幻读的问题

两种说法不矛盾,不可重复读是用行锁来解决的,而行锁是通过版本号实现的。
好比面条是用面粉做的也对,用小麦做的,也不错。

mysql为了实现线程不阻塞,采用了mvvc机制,使用版本号进行事务的隔离,其采用的方式有点类似java的cas机制,最大好处就是不加锁,
但是只有在Innodb的引擎下存在,其实就是实现行锁的一种方式,可以理解为乐观锁实现行锁,对于其他引擎主要是悲观锁实现行锁。
望采纳