ACID 实现概括
原子性:通过 undolog 来实现。
隔离性:通过(读写锁+MVCC)来实现。
持久性:通过 binlog、redolog 来实现。
一致性:MySQL 通过原子性、持久性、隔离性最终实现数据一致性。
对 MySQL 来说,逻辑备份日志(binlog)、重做日志(redolog)、回滚日志(undolog)、锁技术 + MVCC 就是 MySQL 实现事务的基础。
如何理解当前读和快照读
MVCC
ReadView是什么
- Read View 是 MySQL 中用于实现多版本并发控制(MVCC)的概念,在实现事务的隔离性和一致性方面起着重要作用。
- Read View 包含了事务启动时数据库中所有活跃(未提交)事务的 ID,以及事务启动时的系统版本号。它用于确定在当前事务启动时已经提交的数据版本。
- Read View 在实现事务的隔离性和一致性方面起到关键作用,确保事务在执行期间看到的数据是一致的。
MVCC能解决了幻读问题?
MVCC:实现多版本并发控制,实现原理:使用版本链+Read View
读已提交和可重复读实现原理就是 MVCC Read View 不同的生成时机。可重复读只在事务开始时生成一个 Read View,之后都用的这个;读已提交每次执行前都会生成 Read View
MVCC是不能解决幻读问题的,解决幻读问题靠的是间隙锁。
也就是说RR模式下,MVCC+间隙锁解决了幻读问题。