mvcc多版本并发原理

mvcc主要是为了提高并发的读写性能,不用加锁就能让多个事务并发读写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://www.cnblogs.com/luozhiyun/p/11216287.html

MVCC(Multi-Version Concurrency Control)是一种数据库并发控制的技术,用于解决数据库中多个事务同时读写数据时可能引发的冲突问题。其原理如下: 1. 版本号:每个数据库中的数据行都有一个版本号,用于标识该数据行的更新历史。通常情况下,版本号是一个递增的整数。 2. 读操作:当一个事务执行读操作时,系统会为该事务分配一个时间戳(timestamp)。事务只能读取在该时间戳之前已经提交的数据行版本。如果某个数据行的版本号大于当前事务的时间戳,则该数据行对当前事务是不可见的。 3. 写操作:当一个事务执行写操作时,系统会为该事务分配一个时间戳,并将该时间戳与对应数据行的版本号关联。事务需要先检查所要写入的数据行的版本号是否小于等于当前事务的时间戳,如果小于等于,则可以执行写操作。写操作完成后,该事务的时间戳会被提交。 4. 冲突检测:MVCC通过比较事务时间戳和数据行版本号来检测冲突。如果两个事务的时间戳不相交(即一个事务的时间戳小于另一个事务的最小时间戳或大于另一个事务的最大时间戳),则它们不会产生冲突。 5. 回滚与清理:当一个事务回滚时,系统会将该事务所修改的数据行版本号恢复到事务开始时的状态。当一个事务提交后,系统会对其所修改的数据行进行清理,删除不再需要的旧版本MVCC可以提高数据库的并发性能,避免了读-写冲突和写-写冲突,同时保证了事务的隔离性。它被广泛应用于许多关系型数据库系统中,如MySQL、PostgreSQL等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值