MyTopling 事务处理

本文介绍了MyTopling,一个基于MyRocks的MySQL兼容数据库,其在事务处理上进行了优化,尤其是WriteBatchWithIndex的性能提升了20倍以上,通过使用CSPP Trie替换SkipList。此外,还讨论了Transaction Lock的优化,减少了锁的开销。性能测试显示,优化后的MyTopling在E5-2682 v4服务器上实现了每秒70万行,538MB的写入速度。
摘要由CSDN通过智能技术生成

1. 背景

MyTopling 是拓扑岭(topling.cn)开发的 MySQL 兼容数据库,之前我们发布了文章 MyTopling:兼容 MySQL 的云原生数据库

对于任何数据库来讲,事务处理都是核心中的核心,MyTopling 也一样。作为一个社会化分工协作的超大型项目:

  1. MyTopling fork 自 facebook 的 myrocks-8.0.23,对其中的关键模块进行全新设计
  2. facebook 的 myrocks-8.0.23 fork 自 oracle 的官方 mysql-8.0.23
    1. 在 MySQL 的存储引擎架构中,加入了 rocksdb 存储引擎
    2. rocksdb 存储引擎有两层含义
      1. 在 mysql 中,指的是一个名称为 rocksdb 的,实现了 mysql 存储引擎接口的插件
      2. 在更广泛的世界中,指的是 rocksdb 这个 Key Value 数据库
  3. facebook 的 myrocks-8.0.23 还基于 myrocks-5.6.35,本质上是 myrocks-5.6.35 与 oracle 的官方 mysql-8.0.23 两个项目合并的结果

2. MyRocks 的事务处理

MyRocks 的事务处理是使用 rocksdb 这个 KV 数据库中的 TransactionDB 来实现的,TransactionDB 属于 RocksDB 这个项目,而不属于 MyRocks,然而,事实上,因为 MyRocks 和 RocksDB 都是 facebook 开发的,TransactionDB 本质上是为 MyRocks 量身定做的,但是为了实现“复用”,TransactionDB 相当于是强行从 MyRocks 中抽取出来,然后“通用化”成 RocksDB 的一部分,从而可以为 MyRocks 之外的其它项目所用。

在 MyRocks 中,默认的 TransactionDB 是 PessimisticTransactionDB,顾名思义,就是“悲观”事务处理,即先检查是否有冲突,无冲突就继续,有冲突就失败。关于 RocksDB Transaction 的详细分析,知乎上有朋友写了非常棒的回答:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值