本期,我们介绍openGemini社区的一位非常特别的开发者,他是一个健壮的小伙子,身材微微有点胖,但这并不影响他的健康和活力。他的脸上洋溢着喜悦和自信的笑容,眼神里充满了对技术的热爱。他的笑容和热情感染着周围的人,让人感到非常舒适。
社区贡献是一场自我提升的旅行,听听他怎么说
我是王建波,目前就读于电子科技大学,对数据库和性能优化非常感兴趣。
从接触到上手,我只用了一个月
记得那是23年的8月份,在一次偶然的机遇下,我了解到了云数据库创新lab实习的招聘信息,出于对数据库开发的兴趣,我申请并成为了lab的实习生。之后在我导师的指导下,让我从go语言都不太熟悉的 “新手” 逐渐成长为了能独立进行数据库开发的 “老手”。开始时我主要做一些比较简单的任务,比如为 openGemini 添加测试用例,提升系统的可靠性。经过一个月的摸索,我对 openGemini 的基本框架、代码规范以及 Github 工作流都有了一定的了解,由此开始接下来长达5个月的查询性能调优工作。我觉得这个由易到难的过程对在校学生非常的友好,让我能够轻松过渡到实际的项目开发阶段。
成就感源自我的坚持和不懈努力
我的主要工作是对IoT领域的典型查询场景进行性能优化,下面谈谈我做优化的基本流程以及我收获到的一些经验。
首先,寻找一个目标。我选择了国内一款开源时序数据库进行测试对比,测试工具使用TSBS,根据对比结果找到查询性能较差的查询类型,我的目标是要openGemini的性能全面超过它。
其次,寻找性能瓶颈。我使用性能监测工具pprof生成火焰图,定位到具体的瓶颈的function(函数)。对于不同的算子瓶颈点多种多样,其中GC和Slice Grow导致的时间开销问题比较关键,也是提升效果最明显的地方。除此之外,还有一些比较分散的函数级优化,例如避免重复计算、使用hash表等方法减少cpu的开销等等。
参与openGemini开源社区的这几个月,我收获良多。openGemini是我第一次接触到并参与开发的大型的开源项目,开始时我十分的忐忑也十分激动,有种磨刀千日终得一用的刺激感。但是随着第一次提交代码,我发现心情慢慢平静。直到之后不断克服性能瓶颈,我进行了大大小小近20次优化,并且在一些查询场景上性能提高了近十倍,我才发现原来我也能做得很好。
企业开发和我在校写代码完全不一样,刚开始我碰到了很多问题,比如代码不规范,代码复杂度,优化点适用性不高等问题,好在openGemini团队中其他大佬的经验指导下顺利解决,这是独自做开发难以得到的。成果带来快乐、经历带来成长,临近结束,我非常感谢openGemini团队的各位前辈各个方面给我的帮助。
接触开源,融入开源
最后我想从一个在校生的角度聊一下开源。参与开源能帮助学生收获很多东西,不仅仅是一份资历的增加,还有快速地适应之后的工作。一方面,在学校学习到的毕竟只是基础知识,对于工业界的前沿技术是很难接触到的,而参与开源能够帮助我们快速的接触到这些知识。另一方面,开源社区有非常多的同学或专家,大家相互交流,相互帮助,遇到问题也能快速准确的解决。我认为开源社区就是一个超大且自由的项目组,每个人在里面进行思想的交流和灵感的碰撞,最后组成了庞大且复杂的项目。参与建设,也是一种快乐。
-- END --
编辑 | openGemini运营团队
来源 | 王建波
欢迎投稿我们的开发者故事专栏
openGemini官网:http://www.openGemini.org
openGemini开源地址:https://github.com/openGemini
openGemini公众号:
欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!