从2018年4月19日,第一个MySQL 8.0 GA版本8.0.11版本发布至今,已经过去有近3年的时间。
最近三周姜老师“喜提“MySQL 8.0.23,并做了大量的测试与验证,深深地体会到MySQL 8.0的强大。
用过8.0,再想要让我用回5.7,那简直就和开过电车,再开燃油车一样,回不去的。
今天,姜老师将分享自己最喜欢的MySQL 8.0的三大特性。
在真实的业务中,DBA的很大一部分工作就是需要对表进行DDL变更。
虽然,之前有pt-osc、gh-osc这样工具可以变相完成在线加列的功能。然而,他们都不够快速,也存在不少问题和限制。
在MySQL 8.0版本中,不论表的数据量有多大,加列操作都能瞬间完成,这就是内核原生的快速加列(Instant Add Column)功能。
BTW,这个功能是腾讯工程师陈福荣,梁飞龙开发并提交给官方。单就这一个功能,就足以吹嘘一辈子。让我们一起为这两位中国工程师点赞。
MySQL 8.0已经不再满足于仅仅在OLTP领域称王。可以说从8.0版本开始,MySQL将逐渐切入OLAP的赛道。
注意,上面我说的不是最近云环境下的HeatWeave产品,而是官方MySQL。
MySQL 8.0正式支持了Hash Join功能,并且废弃了Block Nested Loop Join算法。在我的生产环境中,SQL执行效率得到大幅提升。
拿MySQL 8.0 + PowerBI来做个5~10T左右的小数仓,真是太适合不过。当然,数据量上去了,现在还得依赖Hadoop的大数据产品。
此外,8.0的CTE(Common Table Expression 通用表表达式)、Window Function(窗口函数)、Exists子查询优化等,都将MySQL对于复杂SQL的支持提升到了一个新高度。
MySQL 8.0最大的诱惑在于性能的提升。
与操作系统升级不同的是,MySQL数据库版本每次升级,伴随性能的提升。而不是如操作系统般,同一硬件环境下,性能的倒推,然后倒逼用户升级硬件。
不可否认,MySQL 5.7版本的性能已然有了大幅提升,在8.0版本中性能还有进一步的提升。可以说,官方在性能这块的优化真的是不遗余力。
姜老师最为欣赏的功能是对于doublewrite的优化,即将doublewrite拆成多个文件以及对应内存锁的拆分,这样极大提升了MySQL在极端负载下的写入性能。
另一个性能的提升点在于8.0版本对InnoDB层的整个redo模块进行了重构,消除了之前存在于InnoDB层的一把大锁。
通过上述的优化,MySQL 8.0在sysbench读写测试中,性能较5.7版本提升30%,较之5.6版本性能提升50%。
在sysbench的update测试中,MySQL 8.0版本较5.7版本有1倍的提升,较之5.6也有50%的性能提升。
注意:5.7版本的UPDATE性能有退化。
此外,虽然字符集UTFMB4已经使用非常广泛,但8.0对于UTF8字符集的处理效率更高,因此能有更出色的性能。
在sysbench只读测试环境下,MySQL 8.0比5.7能有40%的性能提升。
一分钱不花,用上MySQL 8.0,性能就能有30%~100%的,是不是做梦都会笑醒?
无论你是否相信,老大哥Oracle数据库在国内大势已去,未来五年内,国内银行、证券、电信等领域将彻底完成去O。
感谢Trump,让去IOE的进程提速至少5年的时间。本来一些old money们还犹犹豫豫,舍不得放下这么大一块肥肉,而现在,没有了任何可以回避的理由。
从18年前知道PostgreSQL数据库伊始,PG一直扮演的是玄门正宗,追赶MySQL的角色。MySQL 8.0 OLAP、MGR功能的强化,已经让PG数据库所谓的most advanced open source database的称号摇摇欲坠。
至于那些新时代的NewSQL新星们,不论是Aurora、OceanBase、TiDB们等,本质上,他们一点都不New,都是MySQL这个时代的产物。
所以,姜老师的结论是:在传统OLTP领域,MySQL拿着望远镜都找不到对手。然后8.0版本又消无声息地将手伸进了OLAP的口袋。
不要犹豫,赶紧升级到MySQL 8.0,相信我,一旦用上了,你肯定会再次爱上她——这个星球上最有魅力的数据库。
MySQL, the most attractive database in the world.