一:什么是MVCC?
多版本并发控制,更好的方式去处理读-写冲突,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。
二: 快照读与当前读
快照图:读取的是快照数据,不加锁的简单的 SELECT 都属于快照读
SELECT * FROM player WHERE ...
当前读:读取的是记录的最新版本,加锁的 SELECT,或者对数据进行增删改都会进行当前读
SELECT * FROM XX_table LOCK IN SHARE MODE;
SELECT * FROM xx_table FOR UPDATE;
INSERT INTO xx_table ...
DELETE FROM xx_table ...
UPDATE xx_table ...