mysql 持续非锁定读
持续读意味着InnoDB使用它的多版本化来给一个查询展示某个时间点处数据库的快照。查询看到在那个时间点
之前被提交的那些确切事务做的更改,并且没有其后的事务或未提交事务做的改变。这个规则的例外是,查询
看到发布该查询的事务本身所做的改变。
如果你运行在默认的REPEATABLE READ隔离级别,则在同一事务内的所有持续读读取由该事务中第一个这样
的读所确立的快照。你可以通过提交当前事务并在发布新查询的事务之后,为你的查询获得一个更新鲜的快
照。
在共享模式执行一个读意味着我们读最新的可用数据
Next-Key锁定:避免幽灵问题. 该锁定是不允许insert的,那么为什么允许update? 因为已存在的record, 有对应的快照数据
如果读取的行正在执行delete或者update操作的时候,这时候的读取操作不会等待行锁的释放,而是会去读该行的一个快照数据
当tx_isolation=READ-COMMITTED,一致性非锁定读始终读取最新的一份快照数据;
当tx_isolation=REPREATABLE READ,一致性非锁定读始终读取事务begin时候的数据版本。