mvcc什么时候改变版本号
时间: 2024-08-13 09:04:11 浏览: 31
MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种数据库并发控制机制,它允许多个事务同时访问数据而不会相互干扰,每个事务看到的是数据的一个孤立版本。在MVCC模型下,系统并不会立即对数据的修改赋予新的版本号,而是会在后台创建一个新的版本记录(也叫快照),这个新版本记录包含了事务开始时刻的数据状态。
当一个事务提交时,才会将该事务影响的所有行的当前版本号更新,并标记为已提交。如果事务回滚,那么对应的版本记录会被撤销,不会对其他已经提交的事务造成影响。只有读操作(SELECT)会查看到旧的版本,而写操作(UPDATE、DELETE)则会等待直到其所在的事务结束,然后更新版本号并持久化到磁盘。
简单来说,MVCC改变版本号是在事务结束(无论是成功提交还是回滚)的时候,以及发生写操作时。
相关问题
mvcc-full版本
根据提供的引用内容,mvcc-full版本是1.5.0。\[1\]
#### 引用[.reference_title]
- *1* [MMaction2行为分析安装与测试](https://blog.csdn.net/qq_34717531/article/details/124488981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Python3.9安装torch、mvcc](https://blog.csdn.net/qq_39898555/article/details/129651388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [win10安装mvcc-full出现平台错误](https://blog.csdn.net/Unremitting__/article/details/117522339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
MVCC(多版本控制)
MVCC是数据库管理系统中一种处理并发访问的方法,通过为每个事务分配一个唯一的时间戳,从而实现对数据的并发控制。在此方法中,每个事务可以读取旧版本的数据,而不会对其他正在运行的事务产生影响。当事务对数据进行修改时,其修改的数据版本会被分配一个新的时间戳,而其他事务仍然可以继续使用旧版本的数据。当所有事务完成时,系统会将每个事务提交的结果进行合并,形成一个新版本的数据。
在MVCC中,读操作不会被阻塞,因为它们可以读取旧版本的数据,而写操作会被阻塞,直到没有任何冲突的事务在同时进行,从而实现了对数据的并发控制。在实现MVCC时,数据库系统必须保存一些额外的信息,例如在事务中被修改的行的所有历史版本以及每个事务的时间戳。
下面是一个基于MVCC的示例,用于获取一个名为“users”的关系表中的所有行,其中包含每个用户的ID和用户名:
```sql
SELECT id, name FROM users;
```