【事务】幻读
【和不可重复读区别】
https://cloud.tencent.com/developer/article/1450773
[phantom read概念]
A transaction re-executes a query returning a set of rows that satisfy a search condition and finds that the set of rows satisfying the condition has changed due to another recently-committed transaction.
没有讲清楚区别
腾讯这个博客的理解:
(1) 不可重复读是读取了其他事务更改的数据,针对update操作
解决:使用行级锁,锁定该行,事务A多次读取操作完成后才释放该锁,这个时候才允许其他事务更改刚才的数据。
(2) 幻读是读取了其他事务新增的数据,针对insert和delete操作
解决:使用表级锁,锁定整张表,事务A多次读取数据总量之后才释放该锁,这个时候才允许其他事务新增数据。
这时候再理解事务隔离级别就简单多了呢。
【实验】
【调试】
左边xid=993, snapshot.xmin=994, 所以能看到
右边,(TransactionIdFollowsOrEquals(xid, snapshot->xmax))=true,都是995