暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第 5 章:OceanBase 事务引擎 5.4 事务优化

5.4 事务优化

说明

下文中提到的事务模型,均涉及 3 条 select、9 条 insert,总共 9 张表的操作。


优化一:提前响应客户端

OceanBase 1.0 单机分布式事务提交,prepare 阶段完成之后立即应答客户端。相对于传统两阶段提交协议,降低了事务 RT,提升了系统的吞吐能力。

优化1

事务 Commit RT = 1 次磁盘 IO + 2 轮 RPC 通信;整个事务的日志条数:3 * 9 = 27。


优化二:一阶段提交(1 PC)

OceanBase 2.0 采用了 Batch Commit 的优化思路,让单机分布式事务走一阶段提交成为可能。事务 Commit RT 不变,降低了 66.6% 的日志条数,性能提升显著。

1PC 优化前提:

  • 事务所有参与者 Leader 在同一台机器,且 memble list 分布一致。

  • 所有参与者 redo log 总量不超过 1.875M。

优化2

事务 Commit RT = 1 次磁盘 IO;整个事务的日志条数:9 * 1 = 9。


优化 3:Partition Group(PG)

借鉴 MySQL、Oracle 事务提交机制,在一阶段提交基础上,OceanBase 2.2 采用了分区聚合的思路,让一阶段提交的日志条数继续降低 90%,性能提升显著。

优化3

T1、T2、T3 分别为三个不同的业务表,按照相同的分区方式(hash、list 等)分为 3 个 partition。

优化3

优化效果:事务 Commit RT 时间 = 1 次磁盘 IO,整个事务的日志条数 = 1 * 1 = 1。


小结

事务类型CommitRT总日志量备注
传统两阶段提交4 次磁盘 IO2 + 2 * 9 = 20参与者和协调者均需要写 prepare、commitlog
提前响应客户端1 次磁盘 IO3 * 9 = 27只需要参与者写 prepare、commitlog
一阶段提交1 次磁盘 IO1 * 9 = 9只需要参与者写 preparelog
PartitionGroup1 次磁盘 IO1PartitionGroup 只需要写一条日志
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论