12.1 MySQL 8.0有什么新特性



远眺未来:我们介绍了数据库的过去、现在,这一章就是展望未来。

一、MySQL 8.0有什么新特性

1.1 MySQL 8.0版本

MySQL 5.6版本、5.7版本,怎么突然到了8.0版本?没听说过6.0、7.0版本呢?

6.0、7.0版本,压根就没有。因为这里的8.0版本,其实就是MySQL 5.8的意思,只不过换了个名字。因为小版本迭代,显得太low

比如:

有些手机产品,刚诞生就是3.0。其实,1.0、2.0都没有。文字游戏。

1.2 新特性1:窗口函数(Window Functions)

1.sql语句

2.Navicat客户端,执行sql语句

这是连接了MySQL 8.0数据库的可视化客户端,用户界面友好

改造,方便理解:(分解)

意思:把数据表payment中所有数据筛选出来,再额外加上一个字段ranking

字段ranking,是数据表payment中的字段吗?

不是。

  • 用rank()函数,计算出来的这一列,就是字段ranking。
  • 按照支付金额,进行排序(降序);
  • 不是全部排名,而是针对顾客个人的支付金额;

3.执行结果:
先按照customer_id字段,把整个表切分成若干窗口;

然后在每一个顾客内部进行排序。

本质:“每一个顾客内部”,就是一个窗口

上述的rank()函数,就是窗口函数。

窗口函数,不只是rank()函数,还有别的:

1.3 隐藏索引

常用于索引测试,判断索引加上的前后,效果对比:

使能/失能

英文是enable/disable,意思应该是“打开/关闭”某个功能。

直接翻译成“打开/关闭”不好吗,翻译的这么晦涩

1.4 降序索引

1.

在MySQL8.0之前,索引都只能升序排序。

升序索引:单向链表。只能从小往大遍历,不能反过来。

比如:

全班成绩排名,一定是按照总分从大往小排。升序索引,根部无法用。

2.

1.5 通用表表达式CTE

不是结巴。本质思想:封装。

  • 在sql语句内部,创建了一个小的临时视图(临时表)
  • 小括号内部,是一个中间结果,或叫子查询

如果,就子查询就是几十行,整个sql语句好几百行呢?

优点:清爽、可读性好。

1.6 UTF-8编码

以前,是utf8字符集;

现在,utf8mb4字符集才是完整的实现UTF-8编码的字符集。

建表时,不用手动再指定utf8mb4字符集了。

1.7 DDL事务

1.

DDL:对数据结构、元数据的操作。比如,加个字段、加个索引

DML:对数据的操作。比如,对数据的增删改查。------ 以前,都是数据的事务。

2.

DDL事务:

就是在库里创建数据表,建了一张表,后悔了,rollback回滚。以前,无法实现。

现在,8.0可以。-------------------- PostgreSQL(单体之王):我早就实现了,你才补上?

1.8 InnoDB Cluster

存储引擎InnoDB ,能组集群?

组复制。有三个数据库,是平级平等的,没有主从关系。

强一致性协议:其中某一个提交时,必须得到其他两个的同意才行。

以前,不是master-slave吗?

现在,流行叫leader-follower。

1.9 Percona XtraDB Cluster

Percona ,就是那个做XtraBack的公司

组复制。有三个数据库,是平级平等的,没有主从关系。

强一致性协议:其中某一个提交时,必须得到其他两个的同意才行。要写,就一块写。

有点像Zookeeper的强一致性协议。

优点:任何时刻,三个节点的状态都是一样的。强一致性。

不足:流程麻烦。

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 12.1 MySQL 8.0有什么新特性


Stop chasing money, and start chasing the solutions to the problem.