2020 年 12 月 5 日,TiDB 性能挑战赛完美落下帷幕。本次性能挑战赛主要围绕”固定 Workload 优化”和“解决高难度性能优化 Issue ” 两类赛题来进行,旨在通过具体的开发与项目实战,鼓励更多的开发者参与到 TiDB 整体的项目设计及发展路线中,提升自身技术实力,实现技术与项目创新。

此次参赛对象包括:TiDB 客户、开发者、合作伙伴等,共 17 支队伍报名参赛,比赛最终以优化成果(性能提升百分比)、小组 PR 总分(小组开发的相关代码被成功合并到项目主分支提交对应竞赛 PR 获得的积分)和现场答辩完成度进行排名。最终有 7 组队伍进入决赛,在历时 3 个小时的紧张答辩后,评选出前三名以及优秀奖,共计颁发 12 万元现金奖励,以及价值 16500 美元的 TiDB Cloud 资源奖励,竞赛最终排名如下:

在推出的竞赛打卡活动中,LGTMV587、X-Team、史莱克战队一直持续更新项目进度,在社区打卡、提交周报,被评为 “不间断打卡王”,获得了技术书籍《Chaos Enginerring》或《Database Internals》的奖励。还有的小伙伴甚至都没有接触过 Rust,从头开始学起;还有的小伙伴通过本次性能竞赛,获得了新的工作机会。

本届赛事在赛题设计方面融入了前沿的技术与应用方向,对数据库性能提升有极高的要求,但答辩项目的质量却远超预期。正如本次活动的发起人之一、 PingCAP 社区生态事业部负责人姚维所说:“数据库的性能调优一直被誉为‘皇冠上的明珠’,是该领域最高技术水平的代表。所以最开始发起项目的时候也是没什么底的,但最后大家的成果远远超出我的预期!”

优秀项目展示

让我们来看下这些优秀团队的项目展示,包括他们的项目简介和参赛感受,看看哪些 idea 也能给你带来启发~

第一名战队:huang-b

Issue 链接

https://github.com/pingcap/tidb/issues/14441https://github.com/pingcap/tidb/issues/206

项目简介

huang-b 战队选择的是一个高难度 issue。优化思路是使用 Shuffle 算子来实现 MergeJoin 算子和 Stream Aggregation 算子的并行化,在数据源无序的场景下,取得明显的性能提升。后续将会考虑如何对现有的 Shuffle 算子进行改造,消除其中存在的性能瓶颈,以期进一步提升基于 Shuffle 的一系列并行算子的性能。其中,Shuffle Merge Join 的优化效果,最好的情况下 2 个 worker 的运算时间仅为串行版本的 56.5%。

获奖感言

首先感谢 PingCAP 能举办这么有意义的比赛,这是我第一次使用 Go 语言,也是第一次参与开源项目。报名参赛的时候也很怀疑能不能完成 PR,幸运的是遇到了厉害的顾问和靠谱的队友,给了我很多指导和帮助。这是一个很好的开始,希望以后在 TiDB 社区中能和大家一起完成更多有意思的事情。

第二名战队:稳如狗的 HelloKitty

Issue 链接

https://github.com/pingcap/tidb/issues/20231

项目简介

在分布式数据库 TiDB 中如何更好的提高查询的吞吐量和提升查询的性能一直是个难题。我们特意挑选了 PointGet 来作为突破口来优化上述提到的性能。优化方案就是通过增加 Cache 层来减少 RPC 的数量,从而提升整体的性能。未来会添加支持 IN 的缓存操作,以及少量写入的时候也能从缓存中查询数据。

还有一个小插曲,我们做 Benchmark 测试的时候,发现了表即使是在 lock 状态,update 等语句也可以正常执行的 bug。我们当天整理了一下问题并且提出了 Issue,PingCAP 的官方很及时地做出了响应,并且在接下来的几天内就解决了问题并且增加了对应的测试用例,值得点赞。

获奖感言

最开始是抱着学习 TiDB 的心态参加了 B 站的学习视频,跟着课程提交了几次 PR,忽然发现 PingCAP 还举行了 TiDB 性能竞赛,并且每个赛题都会配置相应的 mentor,这是学习并且熟悉 TiDB 的好机会。衷心感谢 PingCAP 给大家提供了这么有价值的机会。在这次 2 个月的长跑中也要感谢 Reviewers( crazycs520, breeswish, jackysp, coocood 等)不遗余力的意见和建议,还有 mentor( jackysp )的悉心指导,帮助我们把控方向,也感谢金泽和卓群提供了一些难点的建议。非常感谢各位运营小伙伴(汽水等)的提醒和帮助让我们这次顺利地"享受"了这次竞赛,体验很赞。

第三名战队:米呦米呦

Issue 链接

https://github.com/pingcap/dumpling/issues/126

项目简介

米呦米呦战队选择的题目也是一个高难度 Issue。Dumpling 是 PingCAP 使用 Go 开发的对数据库进行数据导出的工具,但目前跟 C 语言开发的 mydumper 工具相比性能有些差距。本次项目中,我们通过性能优化手段,在并发条件下,将 Dumpling 性能提升超过100%,达到和 mydumper 不相上下的程度。

获奖感言

由于我米最近开始推进使用 TiDB 方案,我们也开始关注并参加了这次比赛。在这一个多月的时间里,经常和队友在下班后和周末主动留在公司研究 Issue,对问题瓶颈的理解逐渐深入,并且在多个方面进行探索,收获颇多。导师也认真负责,在我们遇到问题的时候,积极的交流并一起分析。比赛体验很不错,感谢 PingCAP 官方组织,也让我们在公司内开展 TiDB 工作赢得一个漂亮的开局,希望以后再接再厉,一起将 NewSQL 数据库发扬光大,为国争光。

优秀战队:anglenet

Issue 链接

https://github.com/tikv/tikv/issues/8635

项目简介

zstd 提供了一种压缩方式,是基于字典进行压缩,可以在一些场景获得更好的压缩率。我们队伍在做的主要是在 Titan 这个项目中,提供 blob 文件的字典压缩选项。涉及到 Titan,Rust-RocksDB 和 TiKV 三个项目。目前的状态是 Titan 部分和 Rust-RocksDB 部分都已经实现完成,TiKV 部分再加一些适配即可。

未来展望

还需要进一步做的事情:一是完成 Titan 部分开启字典压缩后的 Benchmark,测试不同场景下的压缩效果;另外,搭建集群,对集群开启 Titan 特性,使用字典压缩,测试不同场景下的压缩效果。

优秀战队:石沉大海

Issue 链接

https://github.com/pingcap/tidb/issues/20484

项目简介

sysbench-Oltp\_Update\_Index 项目主要是为了优化 Sysbench 压测工具中的更新索引列场景。尤其在索引为唯一索引的情况下,每次更新时会回表校验插入值是否违反唯一约束,从而产生较高的网络延迟。

所以,该项目的第一切入点就是消除一部分网络开销,从而提高更新索引的响应时间,以提高数据库整体性能。落实到具体实现是将校验推到了 commit 操作时才做,从而减少了一半的回表次数,减少了网络消耗。

未来展望

传统的单机数据库优化点主要集中在 CPU、内存、IO 的优化上,分布式数据库相较于单机数据库来说网络优化至关重要,而且网络优化空间较大、效果明显,未来可重点关注网络优化相关点。

最后借用挑战赛评委、伴鱼基础架构负责人徐成选给各位选手的寄语:“很期待大家的 PR 会跑在成百上千的公司的服务器上,这个过程是非常美妙的,也很期待未来会用上其中的一些功能。”

High Performance TiDB

毕业结果展示

作为性能竞赛的“超强助攻” ,High Performance TiDB 课程用权威、优质的学习内容吸引了成百上千的小伙伴参与报名,历经 3 个月的高阶知识输入,共有 6 位优秀的小伙伴完成了重重考验,用一个个高质量的课程作业展示了自己优秀的学习能力,达到了毕业要求,成为了首批结业的高性能人才,在成为 TiDB Committer 的道路上迈出了坚实的一步。再次恭喜这些学霸们!

High Performance 课程首批结业名单

为了更多感兴趣的同学参与到学习中来,也为了同学们获得更好的学习体验,我们将 High Performance TiDB 课程的学习主阵地转移到了 PingCAP University 官网。同学们可以自由观看视频,并且通过视频下方的课程详情获取更多的文档类学习资料,同时每一节课程我们都有准备【课后作业】,帮助大家进行实践,提高自己动手解决性能问题和优化系统的能力。

我们欢迎新同学挑战自我,学习更多分布式系统领域知识,同时也欢迎因为种种原因没能如期毕业的 High Performance TiDB 课程学习者继续挑战,只要你学习完课程,并且完成课后作业,累积到 3000 积分,就能获得新一轮的毕业资格!

更多评委寄语:

知乎技术平台负责人孙晓光:“看到这么多社区小伙伴一块去推进 TiDB 的演进,并在很短的时间内达到了很好的效果,我对 TiDB、TiDB 社区还有这些年轻人充满了期待!”

平安科技数据库产品部门总经理汪洋:“这是非常有意义的活动,看到这些小组这两个月一直在努力,对这个项目充满了热情,直到前一天晚上还有团队在调试,为第二天的答辩做准备。虽然有点遗憾,平安科技的团队没有获奖,但我看到了大家的热情和大家对 TiDB 的热爱。每个参赛团队都有自己的创意,都非常棒,相信 TiDB 的发展会越来越好。”

PingCAP Distributed Storage Team Manager 张金鹏:“首先恭喜这些获奖选手,没有获奖的也不用气馁,大家的背景不一样,对 TiDB 的了解程度也不一样,大家都可以把这次竞赛作为一个新的起点,继续发挥大家的热情以及对技术的热爱,一起把 TiDB 项目建设得越来越好,让越来越多的公司和业务享受到大家所做的贡献。”

还没“玩”够怎么办?

还没“玩”够的小伙伴们注意啦,一年一度的 TiDB Hackathon 已经正式启动!有一些队伍也会把他们未完成的项目在 Hackathon 上继续完成,对这些项目的最终成果感兴趣的小伙伴也一定要关注哦!

本届大赛 Hackathon 的主题为「∞」,参赛项目可围绕 TiDB 组件或结合 TiDB 生态周边(TiKV、ChaosMesh® 等)进行创作,用最硬核的技术和最炸裂的创意去创造无限可能。共计设立高达30 万元的现金大奖,以及 Switch、LOFREE 洛斐 DOT 圆点蓝牙机械键盘等实物奖励。🏅 一等奖(1 支队伍):¥ 100,000🥈 二等奖(2 支队伍):¥ 60,000🥉 三等奖(2 支队伍):¥ 20,000🌟 PingCAP CTO 特别奖 (1支队伍):Switch + 健身环✨ 赞助商特别奖项:CNCF Special Award —— Scholarships to KubeCon 2021✨ 最佳人气奖(1 支队伍,由现场观众投票):LOFREE 洛斐 DOT 圆点蓝牙机械键盘✨ 最终 20 强:Divoom 点音 Evo 蓝牙音箱、CNCF 商店 50 美元礼券等

目前,Hackathon 已经面向全球的数据库爱好者、 TiDB 用户、TiDB 生态合作伙伴及个人开发者开放报名,快来加入 TiDB Hackathon 2020,开启一段精彩的代码旅程!

点击链接填写报名信息,立即组队报名!


PingCAP
1.9k 声望4.9k 粉丝

PingCAP 是国内开源的新型分布式数据库公司,秉承开源是基础软件的未来这一理念,PingCAP 持续扩大社区影响力,致力于前沿技术领域的创新实现。其研发的分布式关系型数据库 TiDB 项目,具备「分布式强一致性事务...