【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 奇闻 » 正文

第一届天池 PolarDB 数据库性能大赛

放大字体  缩小字体 发布日期:2020-06-25 22:36:10    浏览次数:9
导读

  这次天池 PolarDB 数据库性能大赛竞争相当激烈,眼睛一闭一睁成绩就会被血洗,最后榜单成绩是第三名,答辩翻车了,最终取得了大赛季军。云计算领域接触的是最前沿的技术,阿里云的 PolarDB 作为云原生数据库里程碑式的革新产品,也为这次比赛提供了最先进的硬件环境。  随机写和随机读都会根据 key 定位到具体的数据

  这次天池 PolarDB 数据库性能大赛竞争相当激烈,眼睛一闭一睁成绩就会被血洗,最后榜单成绩是第三名,答辩翻车了,最终取得了大赛季军。云计算领域接触的是最前沿的技术,阿里云的 PolarDB 作为云原生数据库里程碑式的革新产品,也为这次比赛提供了最先进的硬件环境。

  随机写和随机读都会根据 key 定位到具体的数据分片,转变为具体某个 DB 分片的读写操作。Range 查询需要定位到分片的上界和下界,然后依次顺序将分片进行遍历。

  单个 DB 分片视角:每个 DB 分片主要分为索引文件、MergeFile、数据文件。其中索引文件存储数据的 Key 以及 Offset,MergeFile 的作用用于聚合 IO,

  数据文件视角:比赛初期数据文件与 DB 分片采用了 1 对 1 的架构设计,后期为了降低随机IO,提高写入速度,

  当下一个数据来时执行同样的操作,当 MergeBuffer 填满 16K,使用 DIO 将 16K 数据批量刷盘。

  细节决定成败,因为三个阶段都会重新打开 DB,所以 Open DB 阶段也成为优化的关键一环。

  当缓存池 8 个分片全部被填满,将重新从头开始,重复利用已被释放的缓存分片。针对 Range 范围查询采用 2 个预读线程持续读取数据分片到可用的缓存片中,Range 线程顺序从缓存中获取数据进行遍历。整个过程保证预读先行,通过等待/通知控制 Range 线程与预读线程齐头并进。

  在 Range 阶段如何保证预读线程能够充分利用 CPU 时间片以及打满 IO?采取了以下优化方案:

  Range 线程和预读线程的逻辑是非常相似的,Range 线程 Busy Waiting 地去获取缓存片,然后等待所有段都预读完成,遍历缓存片,释放缓存片。预读线程也是 Busy Waiting 地去获取缓存片,获取预读缓存片其中一段进行预读,通知 Range 该线程,释放缓存片。两者在获取缓存片唯一的区别就是 Range 线程每次获取不成功会 usleep 让出时间片,而预读线程没有这步操作,尽可能把 CPU 打满。

  因为比赛环境的硬件配置很高,这里使用忙等去压榨 CPU 资源可以取得很好的效果,实测优于条件变量阻塞等待。然而在实际工程中这种做法是比较奢侈的,更好的做法应该使用无锁的架构并且控制自旋等待的限度,如果自旋超过限定的阈值仍没有成功获得锁,应当使用传统的方式挂起线程。

  为了让预读线程的性能达到极致,根据 CPU 亲和性的特点将 2 个预读线程进行绑核,减少线程切换开销,保证预读可以打满 CPU 以及 IO。

  为了防止自定义 Allocator 分配的内存被外部接口回收,将分配的 string 保存在 threadlocal 里,确保引用计数不会变0。

  整个比赛取得的最佳成绩是 414.27s,每个阶段不可能都达到极限成绩,这里我列出了每个阶段的最佳性能。

  大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。一、电子书搜索对于大部分程序员......

  昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!”来看看小王写的代码吧,看完不要骂我装逼啊。private static String createPlayer(PlayerTypes p......

  提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥……然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生!不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。@Charlotte:平日素颜示人,周末美妆博主大家都以为程序媛也个个不修边幅,但我们也许......

  我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能......

  编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直......

  接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择......

  已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份这篇文章会用实例告诉你,什么是差的程序员简历!疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》一石激起千层浪,三天收到两百多封简历。花光了两个星期的所有空闲时......

 
关键词: 性大赛
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:http://www.31duo.com/news/show-321430.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4