多次获得MySQL官方认可,腾讯云数据库怎么做到的?

在这个海量数据大爆发的时代,以往单一的开源数据库产品往往很难直接满足企业的业务需求,在某些场景下,无论是性能、安全还是稳定性,都面临着各种各样的问题,而在最近,拥有多种企业级特性的腾讯云数据库MySQL已经连续多次获得了官方认可,这是怎么做到的?

回到最初的起点,MySQL作为全世界最流行的开源数据库,同时也是DB-ENGINES排名中前二的关系型数据库,不用多说,相信每个数据库领域的从业者都听过这个熟悉的名字,在各种技术论坛里,关于MySQL的讨论从未停止过,干货教学、使用技巧、问题交流…正是MySQL良好的社区氛围提升了其影响力,同时,社区中的大牛对MySQL提出优化方案、提交patch修复bug、探索前沿技术而使MySQL变得越来越好用。

1

一个放到MySQL社区贡献的patch

在腾讯云数据库团队就有这样一位大牛,在国内可以说是最早接触数据库的姜宇祥,多年深耕于数据库领域,职业生涯中还亲身经历了中国最早那一批国产数据库从零开始的整个研发过程,目前在腾讯云MySQL团队负责数据库内核研发。

他积极参与MySQL开源社区在中国成长过程,通过技术宣讲与技术文章助力MySQL在中国的传播。

就在前阵子,他给MySQL提交了一个patch——这是MySQL官方直接放到5.7社区贡献的patch如下:

InnoDB: The open and close sequence for table share instances (m_share objects) and dictionary table instances was modified to prevent accessing old m_share objects that could point to stale dictionary indexes.

Thanks to Yuxiang Jiang for the contribution. (Bug #31899685)

(原文详见:

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-34.html)

其中特地提及“感谢姜宇祥的贡献”(Thanks to Yuxiang Jiang for the contribution

那么,这个patch到底凭什么被官方感谢呢?

简单来说,这个patch修复了inndb的handler对象的index_mapping对象m_share中的index与ib_table不一致,原因是在获取share对象时,表对象的的引用计数被提前减掉了,表对象被淘汰出dict cache,从index_mapping指向了不确定的内存地址的问题。该问题产生原因是open dict table和get share的操作顺序不匹配。

以上是最近被采纳的一个patch,在这之前,我们也分享过一个即将写入官方源码的bug解决之路,正是这些大牛的不断贡献,才使得MySQL变得越来越好用,高效且稳定。

1

一封来自官方的感谢信

同时,也正因为这些值得被记住的贡献,以及腾讯云数据库与开源社区紧密的合作,在20年底,MariaDB社区还给腾讯云数据库专门写了一封特别的感谢信,对腾讯云数据库一直以来对社区的发展提供的支持表示感激(原文详见:https://mariadb.org/thanks-tencent/)

作者Daniel Black在信中称,“我要以MariaDB基金会的名义感谢腾讯在2020年为MariaDB做出的重大贡献,腾讯……为每个人提供了价值,同时降低了(我们的)维护成本。”这得益于腾讯云数据库一年来不断的努力,根据其文章说明,可以看到,这些贡献其中主要体现在:

1.Drop Table Force

表的元数据损坏时支持强制删除表;部分分区损坏时支持强制删除分区。

2.Asynchronous Drop Table

异步删除大表,降低删除大表时带来的性能抖动。

3.Accelerate buffer pool init

并行初始化每个buffer pool instance,提升大内存实例的启动速度。

4.Parallel Initialize Rollback Segment

并行读取回滚段数据,加快实例启动速度。

5.Redo log for NVDIMM in MariaDB

基于AEP设备的数据优化方法,在多种写场景下的数据库性能都得到了大幅提升。

在促进数据库技术及社区的发展上,腾讯云数据库从未停下过自己的脚步,正如Daniel Black所说,“腾讯云数据库一直以来都在不断协助解决各种社区上遇到的问题,这表明了腾讯云数据库不仅是专业的,也愿意和MariaDB合作。”在未来,我们会依旧在技术上持续深耕,为每个用户和每个开源社区的开发者提供更好的服务,与所有的MySQL专家、使用者、社区一起构建越来越好用的MySQL生态。

↓↓就是这个数据库~