感谢腾讯!

我谨代表 MariaDB 基金会,感谢腾讯在2020年对 MariaDB Server 做出的重大贡献。腾讯允许并鼓励其员工为 MariaDB 做出贡献,这表明了他们对开源价值主张的卓越且务实的理解,即在降低软件维护成本的同时为所有人带来价值。

关于腾讯的数据库内核团队

腾讯拥有一个云原生数据库内核研发团队,专注于数据库内核优化和架构演进。团队经验丰富(拥有十年以上的数据库研发经验),服务着数十万企业用户。

腾讯团队专注于计算引擎优化(大纲和计划缓存优化)、存储引擎优化、软硬件一体化设计。为了持续优化存储引擎性能,腾讯在二级缓存架构、自适应哈希索引(AHI)、事务系统锁、可用性以及高可用性(HA)的各个方面进行了研究。至于软硬件一体化设计,他们在基于 NVDIMM 的 redo log 和 binlog 优化方面进行了工作。

欲了解更多信息,请观看视频CDB & CynosDB 与软硬件一体化设计https://mariadb.org.cn/fest2020/cynosdb/;也可在Bilibili上观看)。该视频由腾讯云高级工程师李新龙主讲。您还可以阅读李新龙于2020年9月演讲期间的 Zulip 聊天记录。当然,您也可以直接从腾讯的网页上学到很多,网址是https://cloud.tencent.com/product/cdbhttps://cloud.tencent.com/product/cynosdb

MariaDB 如何利用腾讯的贡献

腾讯的贡献,虽然不总是以原始形式被接受,但它们向服务器开发者突出了在服务器代码的特定功能方面进行重大改进的必要性。

让我一一介绍这些贡献!

强制删除表 (Drop Table Force)

通过解决这个多年未改进的问题,你们强调了 MariaDB 在表创建过程中需要对零星错误和竞态条件保持韧性。以不完整形式存在的表的不一致状态对服务器的稳定性构成威胁。通过引入此功能,数据库管理员总能掌控局面,即使表只部分存在,也能将其删除。数据库管理员可以放心地重新创建同名表,而无需担心触发服务器的异常情况。

这一贡献对用户社区带来了重大益处。

异步删除表 (Asynchronous Drop Table)

这里解决的问题是,删除大表、重建表、添加和删除索引都需要大量时间,在此期间会持有过多的互斥锁。这项改进提高了与 Innodb 表相关的操作的并发性。随着用户数据集的增长和需要进行变更,解决此问题的重要性将对用户有所裨益。

加速缓冲池初始化 (Accelerate buffer pool init)

腾讯在启动和停止大型 MariaDB 实例方面的实际经验表明,即使像初始化缓冲池这样基本的事情也需要改进。所贡献的代码恰好与一项同期解决其他类似代码瓶颈的工作相吻合。对持续改进的需求的提醒确保了这项工作没有停滞,并最终改善了大型实例的启动时间。

并行初始化回滚段 (Parallel Initialize Rollback Segment)

像回滚段这样不太常用的路径在基准测试仅考虑查询吞吐量时常常被忽视优化。腾讯的实际经验促使了这项工作的开展。关于存储和线程相对速度的假设意味着一些先前的假设需要重新测量。MariaDB 开发者正在等待进一步的基准测试来展示这项贡献的价值。

MariaDB 中针对 NVDIMM 的 Redo log (Redo log for NVDIMM in MariaDB)

探索 NVDIMM 等新技术并将其巧妙应用于 MariaDB 的关键领域,这表明腾讯对新技术和 MariaDB 的操作有着细致的关注。这与他们在其他并行开发工作中的专业知识相结合,最终将在存在此类硬件的地方实现更好的服务器性能。我们感谢腾讯在此进程中的贡献,在完成适当的基准测试后,其价值将得到更好的理解。

总结说明

腾讯一年来在解决常见旧错误报告/功能请求问题上的积极作为,展现了腾讯专业知识的真正价值以及与 MariaDB 合作,为所有人提供更好的服务器的意愿。

感谢腾讯,感谢你们在这一年里的出色贡献!我们期待未来有更多的合作。