MySQL 8.0来了,逆之者亡...

MySQL被Sun收购后,搞了个过渡的6.0版本,没多久就下线了(有一次居然听说有人在线上用6.0版本,我惊得下巴都掉了)。被Oracle收购后,终于迎来了像样的5.6版本,之后就是5.7、8.0版本。这么看来,Sun的衰亡不无道理。

P.S,上面说了6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新版本号从8.0开始。

刚被Oracle收购时,大家恐慌的不行,貌似还甚至搞了个联合签名请愿活动来着,可惜真的是应了那句话“天下大势,浩浩汤汤,顺之者昌,逆之者亡”。

创始人Monty又折腾了MariaDB,可惜也是不温不火的。MySQL 8.0发布后,MariaDB宣布不打算继续合并InnoDB引擎,这下就更尴尬了,以后还能愉快的玩耍了吗?这两年Monty老先生还时不时来中国露个脸,但似乎有那么一丢丢变味了。

闲话少说,一起来看看8.0都有哪些真香特性吧。

1. 为什么是8.0

作为迄今为止,地表最强的MySQL版本,8.0被寄予厚望。

虽然在很多人眼里,MySQL 8.0无非是有个"好爹",很多新特性是照着Oracle"抄"的。但在我看来,Oracle作为先驱前辈,已经证明了这些技术的优秀之处,有什么理由不借鉴呢,难道非要折腾出一些只为了能自嗨的莫名其妙的特性才叫牛逼,比如只能用触发器变相实现的表分区功能的某DB?

再说了,即便有个”好爹“,就一定能做好吗,国民老公不也被限制消费了?

MySQL 8.0无论在功能还是性能(整体上),都是目前最好的MySQL版本。以往因为某些特性不支持,导致需要在业务代码、逻辑上做一些妥协,甚至增加使用第三方解决方案(例如NOSQL)。

我相信从8.0开始,以后这种情况会越来越少的,MySQL会越来越好,绝大多数和数据库相关的业务需求,都能在MySQL中完成。当然了,我也相信它不会为了哗众取宠,堆砌一些无谓的功能,变成另一个“最好用”的数据库。

2. MySQL 8.0哪里香

截止本文发稿,MySQL最新版本是8.0.19。下面是站在我个人角度上,认为最香的几个特性。

2.1 性能优化相关

  1. 无疑是hash join。相信DBA们被弱鸡开发坑怕了,有了hash join再也不那么怕没索引的多表join了。还有一个,anti join。
    hash join刚出来时,我做了个简单的测试,当时也发了过朋友圈:

  1. 快速加新列。做过游戏DBA的我简直热泪盈眶,想想以前早起做变更的苦逼岁月(╥╯^╰╥)
  2. 直方图。没有索引,不想建索引,索引不准确?不怕,还有直方图兜底。
  3. 函数索引、表达式索引,开发者们该爱死这两个功能了吧。
  4. 消除了全局的buffer pool mutex。话说这个特性Percona好像在5.5版本就有了,官方团队在这块的动作慢的有点厉害啊。
  5. 倒序索引。任你正序排,倒序排,还是混合顺序排,啥姿势都能满足,em...
  6. 不可见索引。删个索引,想删又不太敢动手,怎么破?不可见索引来救命。改为不可见后,观察一阵子,确认没影响了再放心删除吧。
  7. 引入WRITESET模式,大大提高并行复制效率,主从复制延迟进一步缩小。
  8. 针对JSON数据类型,增加Multi-valued indexes,更方便JSON的搜索了。
  9. HINT语法增强,更方便在执行查询时动态设定选项,针对不同SQL采用不同策略。
  10. 有个新的TempTable引擎,比原来的tmptable强不少。
  11. 其他优化。

2.2 管理、复制、安全方面的功能提升

  1. 正式推出Group Replication。很好,在稳步朝着高性能、高可用方向推进,先实现读可扩展,再实现写可扩展。期待不远的将来再实现分布式Sharding,到那时候,现在市面上那些吹得不可一世的NEWSQL们该哑火了,这两年有点憋屈的说。
  2. Clone Plugin以及ReplicaSet特性,配合MySQL Shell,想要部署一个新的slave实例,或者是InnoDB Cluster节点,就方便很多了。
  3. sqlrequireprimary_key选项设定强制要求每个表都得有个主键。在主从环境中,相信太多人吃过没主键的亏了。当然了,我并没有,嘿。
  4. 实例重启后的自增ID持久化,小增强却解决了业务上的逻辑大麻烦。
  5. extra admin port,管理员可以给自己开后门了。
  6. 在线修改完配置参数后,SET PERSIST语法实现持久化,不用再手工修改一次my.cnf了。
  7. 锁增强,增加SKIP LOCK、NOWAIT LOCK锁模式,以及BACKUP LOCk。
  8. 窗口函数、CTE。做统计分析同学的福音。
  9. 其他提升。

更多的特性,可以访问下面几个资料查看。

  • MySQL 8.0新特性
  • MySQL 8.0相对于5.7的复制改进
  • 从MySQL5.5到MySQL8.0子查询进化之路
  • import time, www.zhuyngyule.cn threading balance = 0 lock = threading.Lock() def change_it(n): # 先存后取,结果应该为0: global balance balance = balance + n balance =www.yixingylzc.cn balance - n def run_thread(n): for i in range(100000): # 先要获取锁: lock.acquire() try: # 放心地改吧: change_it(n) finally: # 改完了一定要释放锁: lock.release() if __name__ == "__main__": t1 = threading.Thread(target=run_thread, args=(5,)) t2 = threading.Thread(target=run_thread, args=(www.kunlunyulegw.com   ,)) t1.start() t2.start() t1.join() t2.join() print(balance)

3. 看完了还不想上车?

细心的读者,或许能发现在官方文档第一章"Chapter 1 General Information"里头,有这么一段话:

Support for www.jianjiylzc.com  setting user variables www.lecaixuanzc.cn in statements www.jianjaoylgw.cn other than
SET was deprecated in MySQL www.maiongw.cn .0.13. This functionality www.xingtuylgw.com 
subject to removal www.tengyueylzc.cn   MySQL 9.0.

嗯,你没看错,是的,下一个就是9.0版本,按照经验,2020年也应该要发布了。再吼一下,MySQL 8.0来了,高铁般的速度,再不上车您就直接用9.0吧。由我主讲的知数堂「MySQL优化课」第17期即将开始,我们的课程从第15期就升级成MySQL 8.0版本了,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。

原文地址:https://www.cnblogs.com/laobeipai/p/12641150.html

时间: 2024-08-26 16:20:52

MySQL 8.0来了,逆之者亡...的相关文章

Atitit.mysql 5.0 5.5  5.6 5.7  新特性 新功能

Atitit.mysql 5.0 5.5  5.6 5.7  新特性 新功能 1. MySQL  5.6    5 大新特性1 1.1. 优化器的改进1 1.2. InnoDB 改进1 1.3. 使用 memcached API 直接访问 NoSQL2 1.4. 更好的复制2 1.5. Performance Schema2 2. MySQL 5.7.62 2.1. 内建中文全文索引2 2.2. 多主复制2 2.3. other2 3. 参考2 1. MySQL  5.6    5 大新特性 M

MySQL · 8.0版本更新 · 性能优化篇

摘要: 本文主要总结下MySQL在8.0版本和性能相关的一些改动,随着新的小版本的发布,本文将不断进行更新,直到正式GA. 已更新版本MySQL 8.0.0MySQL 8.0.0 WL#9387: InnoDB: Group purging of rows by table ID 这个问题最早是faceb... 本文主要总结下MySQL在8.0版本和性能相关的一些改动,随着新的小版本的发布,本文将不断进行更新,直到正式GA. MySQL 8.0.0 WL#9387: InnoDB: Group

Atitit.mysql 5.0 5.5  5.6 5.7  新特性 新功能

Atitit.mysql 5.0 5.5  5.6 5.7  新特性 新功能 1. MySQL  5.6    5 大新特性1 1.1. 优化器的改进1 1.2. InnoDB 改进1 1.3. 使用 memcached API 直接访问 NoSQL2 1.4. 更好的复制2 1.5. Performance Schema2 2. MySQL 5.7.62 2.1. 内建中文全文索引2 2.2. 多主复制2 2.3. other2 3. 参考2 1. MySQL  5.6    5 大新特性 M

RedHat下apache\ftp\mysql 4.0 的安装方法

RedHat下安装这三个服务的方法大同小异 Apache服务: 找到Apache安装包: rpm -ivh httpd-2.0.40-21.i386.rpm 等待安装完成即可 检查安装结果: rpm -qa|grep httpd 有回显httpd-2.0.40-21即表示安装成功. 启动apache服务: service httpd start 通过浏览器访问 IP地址80端口 即可打开apache测试网站 注意事项: 1.apache 服务无法启动,主机名与IP不匹配 解决方法: 手动修改主机

MySQL 6.0 Windows下安装图解

由于免费,MySQL数据库在项目中用的越来越广泛,而且它的安全性能也特别高,不亚于oracle这样的大型数据库软件.可以简单的说,在一些中小型的项目中,使用MySQL ,PostgreSQL是最佳的选择.今天就来说一下MySQL的安装过程. 这里就不说具体上什么地方下载MySQL 6.0了,既然是免费的,肯定下载很容易了,可以到官方网站,也可以到软件当行网站,但为了能获取最新的最好到官方网站.我这里下载的是mysql-essential-6.0.10-alpha-win32.msi.当然还有很多

MySQL 8.0.2复制新特性(翻译)

译者:知数堂星耀队 MySQL 8.0.2复制新特性 MySQL 8 正在变得原来越好,而且这也在我们MySQL复制研发团队引起了一阵热潮.我们一直致力于全面提升MySQL复制,通过引入新的和一些有趣的功能.此外,我们还听取了社区的建议和反馈.因此,我们很荣幸能够与你一同见证最新版本(MySQL 8.0.2)的里程碑式的发布,为此我们总结了其中的一些值得注意的变化.跟随我们下面的博客,我们将会分享这些新功能的一些见解. 我们对MySQL 组复制进行了加强,主要有以下几个方面: 不允许对离开组的成

破解navicat for mysql 11.0.18版本

首先要下载好一个navicat for mysql 11.0.18版本,一定要11.0.18版本,因为其他的版本貌似无法破解,试了几个版本都不行,所以就只能是11.0.18的,附件里就有的下载 然后下载另一个附件zip包,将附件解压成一个文件夹,按照附件里面的说明书进行 重中之重来了:生成的license文件,一定要保存在注册机所在的文件夹里,因为如果你保存在其他地方,是找不到的,起码我好几次都没找到过

MySQL 8.0.0 版本发布,亮点都在这了!

导读 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 可能有人会惊奇MySQL为何从5.x一下跳跃到了8.0.事实上,MySQL 5.x系列已经延续了很多年,从被Oracle收购之前就是5.1,而收购之后一直维持在5.x,比如5.5,5.6,5.7等等.其实,如果

mysql 5.0存储过程学习总结

mysql存储过程的创建,删除,调用及其他常用命令 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)  mysql 5.0存储过程学习总结 一.创建存储过程 1.基本语法: create procedure sp_name()begin………end 2.参数传递 二.调用存储过程 1.基本语法:call sp_name()注意:存储过程名称后面必