赞
踩
在读取数据时直接读取数据库中的最新版本,即读取的是已经提交的事务所修改的数据。当前读操作会获取共享锁,阻塞其他事务对该数据的写操作,以保证读取到的数据是最新的。这对于需要读取最新数据的场景非常重要,例如查询实时数据或进行数据分析。
SELECT … LOCK IN SHARE MODE (共享读锁):
SELECT … FOR UPDATE:
UPDATE / DELETE / INSERT:
mysql中的快照读是通过MVCC+undolog实现的。
我们只是查询数据而不涉及数据的更新。在这种情况下,我们只关心历史快照数据,不需要像更新操作那样获取最新版本的数据。因此,快照读可以在一定程度上提高 MySQL 的并发性能。
快照读,顾名思义,就是读取快照数据,也就是说当某个数据正在被修改的时候,也可以进行读取该数据,保证读写不冲突。
刚刚提到undolog,当我们对记录做了变更操作时,就会产生undo记录,undo记录中存储的是老版数据,当一个旧的事务需要读取数据时,为了能够读取到老版本的数据,需要顺着undo列找到满足其可见性的记录,这个找满足可见行的记录依赖。就是说每次都是读取undolog中的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。