夏克特烦恼—— OceanBase 性能调优论文引起的乌龙

2024年 5月 7日 35.2k 0

5月,素有浪漫之都美名的大连,没有了往日的热闹。空旷的街道、稀疏的人影,伴着从街头吹到巷尾的海风,除了越发的冷清,丝毫没有浪漫的气息。

当然,不只是5月,受疫情影响,从过完年到现在,大连一直很冷清。因疫情防控需要,大连关闭不少公共娱乐场所。而我每天除了家就是公司,两点一线,生活非常规律。

到现在,我已经3个月没去过足球场了。以至于前些天早上起床,老婆突然对着我说,夏克,我发现你有点发福!看着老婆“蒙娜丽莎的微笑”,我一时竟不知她是开玩笑还是认真的。

当然,我的生活也不是一成不变,还是有新的东西让我在疫情期间过的充实:由于工作需要,我开始了解了国产数据库,开始了解 OceanBase,又在 OceanBase 认识一群新的小伙伴——虽然都还素未谋面,但已经是老朋友啦。

1、工作需要,了解 OceanBase

了解 OceanBase ,从官网开始。在 OceanBase 官网查阅大量相关资料以及用户实战分享之后,我不得不感叹 OceanBase 给了我太多的惊喜。

OceanBase 虽然开源不久,但已经声名远扬。首先,它是 HTAP 混合负载数据库,所以它的兼容性、容灾特性非常好。其次,它的分布式特性,让其具备“天下武功,唯快不破”的优势。再配套监控工具、运维工具, OceanBase 想在数据时代占有一席之地,已是雄心勃勃。

当然, OceanBase 也有它不足的地方。比如,它非常吃资源,不管是安装还是运行,配置低的机器可能会无法运行。再者, OceanBase 作为商业替代,它会有很多需要修改的地方。而开发者和运维,则希望尽可能的少改代码,极可能的保留原有的运维习惯。这些,都是 OceanBase 需要改进的地方。

说实话,以前不怎么关注国产数据库,以至于我还以为国产数据库就像国产芯片那样,一直面临技术瓶颈。殊不知,在拒绝被限制的路上,已经有人负重前行。

2、Hello OceanBase

在调研 OceanBase 的时候,我看到《OceanBase 源码解读(十一):表达式和函数》这样一篇文章,它的作者是 OceanBase 内核研发总监竹翁老师。文章深入浅出,干货满满,看完让人有醍醐灌顶之感。竹翁老师在文章的最后这样写道:为 OceanBase 添加系统内建函数,是 OceanBase SQL 组很多新人入职第一题。虽然没有跳槽的打算,但我很想试试。

开发 Hello OceanBase ,第一步就是环境准备。关于 OceanBase 集群部署,不明白的小伙伴可以去社区去多找几个帖子看看。这一块还是比较容易的。

环境准备好,就需要创建 ObExprHello 类。sql/resolver/expr 目录下有大量的实现例子供参考,可以根据实际业务需求选择参考对象。

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-1

紧接着就是修改添加函数名定义、修改工厂类、添加 ID 、修改工程文件······直到编译完成,再进行验证。最后,还需要进行一次测试。整个过程虽然比较顺利,但还是有些问题。比如,最后的阶段,机器根本无法完成截图,我只能好用手机记录下结果。

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-2

创建 Hello OceanBase,对我来说不仅是一次自我挑战,它也让我对 OceanBase 有了新的认识:性能很强大,但是也有不足的地方。本着实事求是的态度,我给 OceanBase 提了几个小建议:

1、环境搭建相对比较复杂,毕竟是分布式部署,所以也可以理解,但是应该有一个像 TiDB 的 playground 这样一键搭建 demo 集群的小功能,可以方便用户快速上手。

2、很吃资源,对于设备简陋的小伙伴想上手,门槛较高,经常遇到一些资源的问题导致部署失败,所以是否可以提供低配版配置。

3、就是上文提到的关于 OceanBase 如何提供用户扩展接口?可能有人会觉得这是个鸡肋,但是往往可以解决一些企业级的应用的需求,在对标 Oracle 功能上也会加分。

4、驱动接口还需进一步完善,比如 rust 驱动、golang 驱动、python 驱动( python 驱动现在是通过 JDBC 实现的),请参考 python 通过 JayDeBeApi 使用 JDBC 链接 OceanBase。

这些建议, OceanBase 可能无法再短时间内解决,但我相信,用不了多久,这些都会被优化。毕竟OB开源才一年多,进步已经神速。

3、在 OceanBase 社区的“一炮而红”

就像在其他社区一样,发完帖后,我就没再管,因为我觉得这仅仅是我的自我挑战,不会有人关注。而且, OceanBase 社区大部分是面向 DBA 的,主要集中在部署、迁移、应用、性能等场景。我的这个属于小众了。

然而,令我没想到的是,就在发帖当天,OB社区的工作人员就联系了我,她们非常热情,仔细询问我在体验 OceanBase 的感受;紧接着 OceanBase 社区的负责人纪老师也找到我,非常盛情的邀请我一块玩代码。

作为一名开发,我常年混迹于各个技术社区。尤其是在 CSDN 这样的社区,我也是小有名气。但这些名气都是我用实力换来的。而在 OceanBase 社区的这份体验,让我有点羞愧。

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-3

在 OceanBase 社区“一炮而红”后,我时常被社区运营的同学“特别关照”:社区里的优质问答,她们会发给我;社区里的捉虫活动,她们会告诉我;社区里的征文比赛,她们会邀请我······总之,社区里面的“大事”,不管我有没有参与,我都会知道。

这让我想起了那句至理名言:细节决定成败。有这样的一群运营, OceanBase 社区一定能一飞冲天!

4、“全国作文竞赛”二等奖

4月下旬,OceanBase 社区发起了第三期技术征文大赛。这次大赛的主题是“性能调优”。

性能调优,你可以通俗的理解为如何在不同场景下让 OceanBase 运算速度变得更快。社区的目的是希望有更多的开发者参与实践探索,围绕 OceanBase 的众多参数和配置项进行挖掘、创新。这种探索,会让更多的用户了解 OceanBase 的强大。

这样的比赛,瞬间激发了我作为一名开发工程师的挑战欲望!思考了两天,我决定从 ARM 编译操作系统出发,对 ARM 版 OceanBase 迁移到 Kunpeng+openEuler 进行尝试,通过源码重新编译,提升性能。

工欲善其事,必先利其器。编译也一样,环境准备很重要。虽然编译对电脑配置要求不高,但很吃 CPU 和内存,如果 CPU 版本低、内存少,就很有可能出现“一同操作猛如虎,最后成果250”的情况。就我个人实践来看,建议 CPU 配置最低 16c,内存最少 32G。

准备工作之后,就是获取源码、安装依赖,再就是反复调试编译脚本。这个过程有点枯燥,因为它有可能反复出现报错。每次出现报错,你都需要回到源码根目录,重新编译。

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-4

在整个迁移工作,我反复编译了 5 次,过程虽然艰辛,但最后还是成功了。当然大家如果也想尝试,可以先看看我的这篇文章《OceanBase 二次开发 之 Kunpeng + openEuler 适配优化》,了解整个操作流程,统一修改后再去编译,确保一次成功。

一分耕耘一分收获,我的这篇文章在此次论文比赛中被评为二等奖。社区工作人员还给我寄来了获奖证书和奖品。

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-5

向来高调做事低调做人的我,当然不会炫耀,拿到证书和奖品,就放进了书橱。但有一天,接女儿放学的老婆,刚回家就质问我,是不是获得全国作文比赛二等奖没告诉她。我听了一脸懵,赶紧否认此事。老婆以为我是故意不招,就准备动真格的。这时候女儿跑过来替我解围:爸爸,你别藏着了,我都看到了,奖状就在你书橱里。说完,就跑去书橱把我的获奖证书拿出来了。仔细看了三遍,老婆笑到肚子疼,这是“小棉袄”漏了风,才闹出的乌龙。

“死里逃生”的我,就问老婆是怎么知道的。老婆指了指女儿:她在全班宣布了,她爸爸获得全国作文比赛二等奖。把其他小朋友给羡慕的。现在,人家家长让你给他们孩子辅导作文呢!

好家伙,这“小情人”着实有点坑爹!

5、过期的 OBCP 考试券

如果说在 OceanBase 社区有什么遗憾,不得不说,弄黄了两张 OBCP 的免费考试券,让我心疼不已。

调研 OceanBase 之初,我跟着 OceanBase 官网进行学习视频。大概学了一个月,抱着试试的心态,我报考了 OBCA。没想到,轻松就过了。考完 OBCA 我就想去试试 OBCP。

这里我要科普一下 OBCP:

OBCP 认证主要适合架构师、高级数据库管理员、高级应用开发人员等合作伙伴高级售后服务人员,旨在让他们了解 OceanBase 的高级特性(全局索引、全局数据一致性、负载均衡策略、SQL引擎优化),以及 OceanBase 内存构成、内存数据落盘策略和 HTAP 等知识,同时提供了进阶实验课程。

与 OBCA 不同,OBCP 是线下考试,考试费 1200 元,并且大连没有考试点。而我,因为参与了文档建设,被官方奖励了一张免费考试券。但因疫情原因,我无法去大连,只能眼睁睁看着考试券作废。后来,又因征文比赛,我再一次拿到 OBCP 的免费考试券。但还是同样的原因,我依旧没能考试!就这样糟蹋了两张免费考试券,甚是遗憾。

所以,直到现在,我还是没能通过 OBCP 的考试。但是,等疫情过去,即使没有免费的考试券,我也要去拿下这个认证。

6、写在最后

海纳百川、有容乃大。信创的大背景下,国产硬件、操作系统、数据库、中间件等基础软件行业迎来了春天,这既是机遇又是挑战。头部的大厂既是水平领域的竞争对手,又是垂直领域的合作伙伴。而作为这个行业的从业者,我们既要看到在基础软件领域的差距,又要砥砺前行,自强不息。

有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。让我们一起见证国产数据库百花齐放的春天,艳阳高照的夏天,硕果累累的秋天。

最后的最后,您有任何疑问都可以通过以下方式联系到我们~

联系我们

欢迎广大 OceanBase 爱好者、用户和客户随时与我们联系、反馈,方式如下:

社区版官网论坛

社区版项目网站提 Issue

钉钉群:33254054

夏克特烦恼—— OceanBase 性能调优论文引起的乌龙-6

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论