挑战基础软件皇冠明珠,TiDB 性能竞赛战果揭晓
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,開啟一段精彩的代碼旅程!
點擊鏈接填寫報名信息,立即組隊報名!
總結
以上是生活随笔為你收集整理的挑战基础软件皇冠明珠,TiDB 性能竞赛战果揭晓的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sdnu1038
- 下一篇: 使用C#实现Rundll32程序功能