草庐IT

readview

全部标签

MVCC并发版本控制之重点ReadView

MVCC并发版本控制本文大部分来自《MySQL是怎样运行的》,这里只是简单总结,用于各位回忆和复习。版本链对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(不知道的快去看《MySQL是怎样运行的》)trx_id:每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的事务id赋值给trx_id隐藏列。roll_pointer:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。假设现在有两个事务id分别为100、200的事务对这条记录进行UPDATE操作,操作流程如下:每次对记录

MySQL之事务隔离级别和MVCC

事务隔离级别事务并发可能出现的问题脏写事务之间对增删改互相影响脏读事务之间读取其他未提交事务的数据不可重复读一个事务在多次执行一个select读到的数据前后不相同。因为被别的未提交事务修改,删除数据或数据被更新被当前事务读取到了。幻读一个事务在第一次读取正常数据,第二次读取到其他未提交事务的insert记录,导致读取一个不存在的记录。指一次读取读取到了之前未读取到的数据。事务的4个隔离级别,以及解决的问题READUNCOMMITTED未提交读解决脏写READCOMMITTED提交读解决脏写、脏读REPEATABLEREAD可重复读解决脏写、脏读、不可重复读SERIALIAZBLE可串行化解决脏

MySQL之事务隔离级别和MVCC

事务隔离级别事务并发可能出现的问题脏写事务之间对增删改互相影响脏读事务之间读取其他未提交事务的数据不可重复读一个事务在多次执行一个select读到的数据前后不相同。因为被别的未提交事务修改,删除数据或数据被更新被当前事务读取到了。幻读一个事务在第一次读取正常数据,第二次读取到其他未提交事务的insert记录,导致读取一个不存在的记录。指一次读取读取到了之前未读取到的数据。事务的4个隔离级别,以及解决的问题READUNCOMMITTED未提交读解决脏写READCOMMITTED提交读解决脏写、脏读REPEATABLEREAD可重复读解决脏写、脏读、不可重复读SERIALIAZBLE可串行化解决脏