好像和一致性非锁定读和锁定读 是类似的概念
一致性非锁定读 = 快找读
锁定读 = 当前读
快照读与当前读
当前读:就是操作数据库数据时最新的数据。例如在增删改数据时,肯定是要更改最新的数据的。这个最新的数据就是当前读的结果,加锁的查询语句和增删改语句就是当前读。实现当前读,需要先获得数据的锁,之后加锁修改或查询数据。
快照读:就是普通的查询语句读取数据。例如某个时刻有并发事务 A 和 B,事务 A 在查询语句时,事务 B 还未提交,那么该查询语句读到的数据应该是事务 B 开始前的数据,即历史数据。实现快照读,就涉及到 MySQL MVCC。
当前读的一些常见 SQL 语句类型如下:
# 对读的记录加一个X锁
SELECT...FOR UPDATE
# 对读的记录加一个S锁
SELECT...LOCK IN SHARE MODE
# 对读的记录加一个S锁
SELECT...FOR SHARE
# 对修改的记录加一个X锁
INSERT...
UPDATE...
DELETE...