【课后练习】从0到1数据库内核实战教程六

1、MiniOB: 支持一条语句插入多条数据。要同时成功或失败。可以在训练营提交测试。
训练营OceanBase 社区

训练营使用文档训练营使用说明

2、OceanBase: 阅读源码或阅读一篇论文。

今日讲解内容相关源码位置:src/storage/memtable/mvcc/
推荐论文:

《Opportunities for Optimism in Contended Main-Memory Multicore Transactions 》
《An Empirical Evaluation of In-Memory Multi-Version Concurrency Control 》
也可以阅读其它相关优秀论文。

附加题:并发控制重要问题
场景:
○ T1 为写事务,修改r1、r2、r3、r4、r5
○ T2 为读事务,
■ 读取r1、r2,事务T1还没有提交;
■ 读取r3的时候,事务T1开始prepare;
■ 读取r4、r5的时候,事务T1commit完成;

问题:事务T2是否能读到r4、r5这两行关于T1的修改?代码层具体是怎么实现的,具体代码路径:
src/storage/memtable/mvcc/ob_mvcc_row.cpp
src/storage/transaction/ob_trans_part_ctx.cpp

【OceanBase 社区定制的教程结业证书】获取规则

从0到1数据库内核入门实战教程证书
完成7期教程学习+完成3道 MiniOB 课后练习题;

从0到1数据库内核进阶实战教程证书 (以下方式二选一即可)

  1. 完成视频教程学习+ 发布源码解读文章3篇+ 修复普通级bug不低于2个
  2. 完成视频学习+ 发布源码解读文章1篇+ 修复挑战级bug不低于1个

说明:
1、文章标准:属于源码修改或者源码解读类型文章,如阐述bug修改过程,feature实现原理等。
2、普通级bug:主要包括如标签修改、代码注释、unittest等相关bug,如特别情况请和社区及时沟通。
3、挑战级bug:主要包括如功能实现等。

1 个赞