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 圆点蓝牙机械键盘等实物奖励。

挑战基础软件皇冠明珠,TiDB 性能竞赛战果揭晓相关推荐

  1. 无挑战,不 Geek!TiDB 性能挑战赛等你来战

    如果说,人类进化动力源于挑战: 想突破速度,于是从太空飞行追逐到量子世界: 想追求稳定,于是在万变之中,求不变之道: 想打破繁复,于是用 1 台智能手机集成 N 种必需品,大道至简-- 那么,挑战充满 ...

  2. Linux内核贡献全球第二,开源四大基础软件,为什么华为要啃下这块硬骨头

    作者 | Just 出品 | CSDN(ID:CSDNnews) 回顾计算机发展的历史,任何一个计算架构的成功都离不开强大的硬件,但这背后更需要繁荣的软件生态. 1960年的集中式计算出现后,诸多基础 ...

  3. 打好基础软件国产化攻坚战 GBASE南大通用责无旁贷

    数据库是底层硬件资源与上层应用间的重要支撑,以其高技术门槛.长研发周期.硬工程要求被誉为"基础软件皇冠上的明珠".洞悉数据库底层逻辑,打造自主可信的国之重器是实现科技自立自强的必然 ...

  4. 以合力加速基础软件创新:拆解鲲鹏众智如何繁荣新计算生态

    文 | 曾响铃 来源 | 科技向令说(xiangling0815) 复杂而特殊的时代背景下,今年的软件产业年会引发了更多关注. 软件产业的繁荣是数字经济发展的重要前提,也是产业升级和国家竞争力进一步提 ...

  5. 符合ASIL D的AUTOSAR基础软件带来的安全和性能

    符合ASIL D的AUTOSAR基础软件带来的安全和性能 本文转载于符合ASIL D的AUTOSAR基础软件带来的安全和性能,原稿来源:Safety and Performance with ASIL ...

  6. 深入解读基础软件云原生面临的挑战 | 龙蜥技术

    2022 长沙 · 中国 1024 程序员节已于 10 月 23 - 25 日在长沙.北京等多地圆满举行.本次程序员节以"算力新时代,开源创未来"为活动主题,开设十余场专业主题论坛 ...

  7. 儿童计算机知识竞赛,2016全国少儿百科知识挑战活动软件电脑版

    2016全国少儿百科知识挑战活动软件电脑版是"我是小小中国通-十万零一个为什么"百科知识竞赛的答题软件,通过这款软件你可以在线参与这次的全国少儿百科知识挑战活动,这次的活动是通过线 ...

  8. 中国国产基础软件发展的机遇与挑战

    中国国产基础软件发展的机遇与挑战 2011年06月30日18:21 it168网站原创 作者:李伟 编辑:李伟 我要评论(0) 标签: 基础 , 信息化频道 , 行业信息化 , 业界 [IT168 信 ...

  9. 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来

    近十年来,中国基础软件发展势头迅猛,市场前景看高,越来越多的企业也正在进行基础软件升级.那中国基础软件行业目前在国际市场上有什么优势,面临哪些困境,以及未来基础软件行业会如何发展呢?腾讯云数据库邀请沙 ...

  10. 数据蒋堂 | 做基础软件要投入很多钱?

    作者:蒋步星 来源:数据蒋堂 本文共1100字,建议阅读8分钟. 看起来还真是,似乎还要再加大投入才行? 现在有个说法,国家对基础软硬件的投入太少,经常会说微软.Oracle.Intel这些巨头每年的 ...

最新文章

  1. springboot 日志 log4j
  2. 2048界面优化c语言,好玩的2048小游戏,C语言的代码分享给你,快来练习吧!
  3. 我国数字出版发展尚存三大难题
  4. 不混淆某个方法_英文和拼音会混淆吗?这些事越早知道越好
  5. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 Jtop
  6. 界面发布2019中国最富1000人榜:凛冬望春,马云问鼎中国首富
  7. 函数局部有界性定理_高数第五章多元函数微分学
  8. linux sd卡 分区变大,Linux 动态调整分区大小
  9. python简明教程_07
  10. ECharts 简明教程,用js输出图表
  11. IDEA 打包jar
  12. .计算机自动关机或重启,电脑自动关机与重启是什么原因
  13. android写日记app,写日记的app哪个好用 写日记的软件有哪些
  14. 淘宝信用等级|淘宝买家信用等级|淘宝卖家信用等级(图片介绍更清晰)
  15. 高数_第3章重积分_三重积分之2__先一后二和先二后一
  16. Macbook 投影仪连接问题
  17. 模拟电路50(开关电容滤波器)
  18. 路遥《早晨从中午开始》读后感
  19. 山东省第五届ACM大学生程序设计竞赛 Weighted Median
  20. 【小迪实地】Webdav安全配置相关与漏洞利用

热门文章

  1. 190115_Vue下路由History mode导致页面无法渲染的原因
  2. CSS3之图片列表展示特效
  3. lattice planner 规划详解
  4. Siebel学习笔记
  5. S32K--输入捕获(FTM_IC)配置与使用学习笔记(SDK3.0)
  6. Android开发:toast封装工具类
  7. ZZULIOJ 1190: 按出生日期排序(结构体专题)
  8. 面试官:内存耗尽后Redis会发生什么 ?
  9. 浮点型数据在内存中是如何存储的
  10. cydia未能找到使用主机名的服务器,cydia未找到主机服务器