【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】3.2.3
【问题描述】 OB如何实现MVCC,
例如会话1 执行update 操作 id列由1变成2 不提交
会话2 执行 select 操作,查询结果肯定为1
想知道, 修改前的数据1 是存放在哪?如何实现MVCC
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】3.2.3
【问题描述】 OB如何实现MVCC,
例如会话1 执行update 操作 id列由1变成2 不提交
会话2 执行 select 操作,查询结果肯定为1
想知道, 修改前的数据1 是存放在哪?如何实现MVCC
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
OB的底层存储是LSM。会话1做更新操作,会在LSM上新增一条数据,最开始是在MemTable中的,也就是在内存中的。
你好,OB是如何找到修改前的数据1 的? 是什么机制?谢谢
类似oracle, ob也有undo_retention的配置
受保护的历史更新版本都会维护住
另外对于ob的架构来说, 不会原地更新数据, 所以多版本是比较自然的实现