mysql如何做到可重复读

MySQL的事务隔离级别分为4个:读未提交、读已提交、可重复读和串行化。在可重复读隔离级别下,MySQL如何保证数据的一致性,下面进行介绍。

可重复读隔离级别下,MySQL保证数据的一致性的关键是使用了多版本并发控制(MVCC)的技术。MVCC的核心思想是:每次修改数据的时候,不直接修改原始数据,而是将修改后的数据作为新版本存储起来。

在可重复读隔离级别下,每个事务都有自己的读视图,这个读视图是一个时间点的数据快照。读视图中包含了事务开启时已经存在的数据版本。当一个事务需要读取数据的时候,会使用自己的读视图来获取数据。在事务执行期间,它只能看到已经存在于读视图中的数据版本。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; START TRANSACTION; SELECT * FROM table WHERE name='John' FOR UPDATE; UPDATE table SET age=age+1 WHERE name='John'; COMMIT;