查看原文
其他

MySQL vs Redis,新时代王者的较量

破产码农 InsideMySQL 2022-10-13

        

破产码农

IT圈最会讲故事的网红 · 南山彭于晏

‍最近海贼王的漫画连载中,五位新时代的超新星正联手对付两位四皇,旧时代的霸主。

曾经被作者无数次铺垫的地球最强生物凯多,先是被索隆用九刀流砍伤,接着又被领悟霸王色缠绕的路飞打得口吐鲜血。不用往下看,接下去主角路飞肯定能打败地球最强生物。

在数据库领域Oracle毫无疑问是曾经的王者,地球最强数据库。但进入新时代后,超新星的诞生正在不断挑战旧秩序时代的霸主。不可否认,MySQL + Redis的组合已经是互联网行业的标准数据库配置,而Oracle数据库已逐渐黯然失色。

MySQL好比是海贼王中的路飞,Redis就是他的副船长索隆。之前MySQL vs Memcached的文章中,不少同学留言想要看MySQL vs Redis的性能跑分。今天,安排~~~


对决,MySQL vs Redis!



熟悉Redis架构的同学应该知道Redis是单线程的,这里的单线程是指核心执行KV操作是单线程的。因此,理论上来说1个Redis实例只能跑在1个CPU上。

所以,从测试上看,Redis是非常吃亏的,也是我之前并不像对比Redis的原因。

接下去我们开始进行测试,测试过程中Redis关闭aof,rdb功能,作为纯内存KV进行GET、SET请求。

MySQL这里启用Memcached Plugin插件,使用Memecache的GET、SET请求。

下表显示了GET测试的结果:

           

可以看到随着线程数的增大MySQL的GET性能不断提升,可以充分利用CPU的多核性能。

相反,Redis最高只能维持在单个CPU的使用,因此最高也只能有16W左右的QPS。而我们已经在前面的文章中知道这台服务器MySQL的GET上限是280W的QPS。

所以,16线程以上不用再测试了,否则对Redis侮辱性太强。

接下去的SET测试结果是大同小异,但是需要特别提醒的是Redis的CPU占用率只有100%,而MySQL在16个线程下的测试,CPU使用率有1506%,比Redis要高15倍。

当然,这也是因为MySQL需要事务支持,日志写入等额外开销。    

   


测试视频





Redis,yyds



在这一场对决中,我们并不能说Redis完败MySQL,相反Redis表现的及其优异

因为MySQL单核CPU只有7W的效率,而Redis可以有15W的效率。

这是两种完全不同数据库应用导致的不同架构。MySQL关系型数据库会尽可能充分挖掘多核性能,不断满足业务的QPS。

Redis最初的定位就只是一个缓存,所以,缓存真的需要百万QPS么?在真实的架构中,其实并不需要。

很多人认为KV数据库性能比基于磁盘的关系型数据库好,其实大部分是错的。或者说理解是非常片面的。从跑分来看,无论是Redis、还是Memached,都输给了MySQL数据库。

但我依然认为Redis是新时代的王者,因为他解决业务环节的真正痛点:理解并支持业务所需的数据结构,提升软件开发效率。

什么RT(Response Time)时间更低,性能更好,全部是错的,彻头彻尾的错误!!!完全经不起推敲。

Redis只做对了一件事情,所以他把Memcached干掉了。不是因为性能,而是因为他更懂业务

为什么曾经的王者Oracle数据库终将败给新时代的数据库们呢?

因为类似MVCC、RAC这样雷鸣八卦般的绝招,数据库的新星们都有其他更优的解决方案。

与此同时,MySQL和Redis更贴近业务的需求,在数据库层做减法,做精做细自己所擅长的部分,而不是一味地堆叠无用的功能和硬件。


对于国产数据库的思考



通过MySQL、Redis数据库超新星们的成功,再来review当前的国产数据库们。

他们无一例外犯了一个错误,那就是:做大做强。丧失了对于业务真正需求的理解。

  • 银行在去IOE的过程中真的需要分布式数据库么?

  • 业务真的需要分布式全局MVCC功能么?

  • 业务真的需要分布式数据库的分布式事务机制么?

又比如某分布式数据库,竟主打用一堆超高配置硬件做数据库架构,只是为了在不足1000的QPS业务上实现所谓的动态扩缩容功能。

为什么就没有人能做一个国产的缓存系统呢?大家都需要,能真正提升开发效率的产品呢?然后在此基础上不断迭代,成为世界级的缓存产品。

而不是拿着MySQL协议在上面包着一层又一层,甚至把LevelDB的KV结构硬生生的封装出了关系型结构。

这里,我强烈推荐腾讯互娱团队开发的Tendis数据库产品。100%兼容Redis协议、高可用、高性能、可持久化的分布式高性能KV数据库。

可能有同学会认为他们只是在Redis源码上进行了持久化功能的微创新,但实际是他们团队用近3年时间全新开发的这款KV产品。

可以说,这是最近几年我见过最贴近业务的数据库产品,而不是一帮内核开发人的闭门造车。

Tendis数据库目前已开源,感兴趣的同学可关注GitHub:https://github.com/Tencent/Tendis

这个世界,做精做好一件事情,足以。


—— 破产码农 《逍遥天游》



IMG群是码农的交流社区,IMG微信群交流内容包括但不限于技术、经济、军事、八卦等话题。欢迎有态度的码农们加入IMG大家庭。
IMG目前有少林群、武当群、峨眉群、华山群、M悦会(高端VIP群)
仅限码农入群,猎头或其他行业勿加,入群请加姜老师个人微信 82946772,并备注:码农入IMG群
-----------------------
公众号:破产码农
视频号:破产码农
抖音号:破产码农
B站号:姜老师带你飞
长按下图二维码关注,将感受到一个有趣的灵魂,每篇文章都会有新惊喜。

          

往期推荐

刚刚,MySQL 战胜了老大哥 Memcached!


震惊!MySQL 8.0 220W QPS轻松达成


MySQL 8.0使用三周后,我再也看不上5.7版本了


这样写SQL,让你的MySQL性能提升20%+


QPS从20W到140W,一个参数让MySQL 8.0性能提升7倍


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存