不用花生壳做网站服务器,电子商务网站技术,网上书店网站建设策划书,网页构建多版本并发控制#xff08;MVCC#xff0c;multiversion concurrency control#xff09;
MVCC用更加灵活的方式处理并发#xff0c;实现了读不加锁#xff0c;读写不冲突。保证了事务的隔离性#xff08;可重复读#xff09;#xff0c;避免了不可重复读问题。
数据…多版本并发控制MVCCmultiversion concurrency control
MVCC用更加灵活的方式处理并发实现了读不加锁读写不冲突。保证了事务的隔离性可重复读避免了不可重复读问题。
数据库实现MVCC的方式不尽相同典型的有乐观并发控制悲观并发控制
Mvcc类似行级锁大都实现了非阻塞的读操作写操作只锁定必要的行。
Mvcc通过保存数据在某个时间点的快照来实现。即不管需要执行多长时间每个事务看到的数据是一致的
innoDB的mvcc实现过程
innnoDB需要维护mvcc会损耗性能这也是innoBD比Myisam查询慢的原因之一。
每行记录保存两个隐藏的列分别为创建时间和过期时间或删除时间的版本号。开始版本号作为事务版本号每开始一个新的事务版本号会自增
innoDB可重复读隔离级别下的具体操作
Select
查询需要满足以下条件
版本早于系统版本号小于等于当前事务版本的数据行行的删除版本未定义或大于当前事务版本
Insert
插入的行的行版本号为当前系统版本号
Delete
删除的行的删除版本号为当前系统版本号
Update
转换成insert delete插入一条数据行版本号设为当前系统版本号原来行的删除版本号为当前系统版本号 Mvcc只在可重复读和提交读的隔离级别下生效因为为提交读总是读取最新数据行可串行化对所有读取的行加锁。