MySQL8.0概述及新特性

这篇具有很好参考价值的文章主要介绍了MySQL8.0概述及新特性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


学习资料

【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】
【阿里巴巴Java开发手册】https://www.w3cschool.cn/alibaba_java

常见的数据库管理系统排名(DBMS)

目前互联网上常见的数据库管理软件有Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、informix这几种,如下是2022年DB-Engines Ranking对数据库受欢迎程度进行调查后的统计结果:查看数据库最新排名:https://db-engines.com/en/ranking

MySQL8.0概述及新特性

对应走势图:https://db-engines.com/en/ranking_trend
MySQL8.0概述及新特性

SQL的分类

DDL:数据定义语言

CREATEALTERDROPRENAMETRUNCATE

DML:数据操作语言

INSERTDELETEUPDATESELECT

DCL:数据控制语言

COMMITROLLBACKSAVEPOINTGRANTREVOKE

MySQL8.0新特性

非全部新特性,仅是自我感觉用得着,并且非常重要的。

性能优化

性能峰值几乎是5.7的两倍。

默认字符集

在MySQL 8.0版本之前,默认字符集为latin1 ,utf8字符集指向的是utf8mb3 。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为utf8mb4 ,从而避免上述乱码的问题。

DDL的原子化

在MySQL8.0版本中,InnoDB表的DDL支持事务完整性,即DDL操作要么成功要么回滚。DDL操作回滚日志写入到data dictionary数据字典mysql.innodb_ddl_log(该表是隐藏的表,通过show tables无法看到)中,用于回滚操作。通过设置参数,可将DDL操作日志打印输出到MySQL错误日志中。

计算列

什么叫计算列?简单来说就是某一列的值是通过别的列计算得来的。例如:a列值为1、b列值为2,c列不需要手动插入,定于a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。
在MySQL8.0中,CREATE TABLE和ALTER TABLE都支持增加计算列。
语法:GENERATED ALWAYS AS (计算公式) VIRTUAL

宽度属性

从MySQL8.0.17开始,整数数据类型不推荐使用显示宽度的属性。

//创建表
CREATE TABLE tb1(
id INT,
a INT,
b INT,
c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);

//插入数据
INSERT INTO tb1(a,b) VALUES (100,200);

//查询结果
mysql> SELECT * FROM tb1;
+------+------+------+------+
| id   | a    | b    | c    | 
+------+------+------+------+
| NULL | 100  | 200  | 300  |
+------+------+------+------+
1 row in set (0.00 sec)

窗口函数

窗口函数的作用类似在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中。

窗口函数可以分为静态窗口函数动态窗口函数
静态窗口函数的窗口大小是固定的, 不会因为记录的不同而不同;
动态窗口函数的窗口大小会随着记录的不同而变化;

MySQL8.0概述及新特性
语法结构
窗口函数的语法结构是:

函数 OVER(PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC)

或者是:

函数 OVER 窗口名 ... WINDOW 窗口名 AS (PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC)

OVER的关键字指定函数的窗口范围。
如果省略后面括号中的内容,则窗口会包含满足WHERE条件的所有记录,窗口函数会基于所有满足WHERE条件的记录进行计算。
如果OVER关键字后面的括号不为空,则可以使用如下语法设置窗口。

窗口名:为窗口设置一个别名,用来标识窗口。

PARTITION BY子句:指定窗口函数按照哪些字段进行分组。分组后,窗口函数可以在每个分组中分别执行。

ORDER BY子句:指定窗口函数按照哪些字段进行排序。执行排序操作使窗口函数按照排序后的数据记录的顺序进行编号。

FRAME子句:为分区中的某个子集定义规则,可以用来作为滑动窗口使用。

窗口函数的特点是可以进行分组,而且可以在分组内排序。另外,窗口函数不会因为分组而减少表中的行数,这对我们在原表数据基础上进行统计和排序非常有用。

公用表表达式

公用表表达式(或通用表表达式)简称CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。

如果您打算在同一查询中重用子查询,则建议使用“公用表表达式”,因为该子查询被临时保存到内存中,这意味着它不需要多次运行。它们通常看起来也更干净,因此,如果您共享代码,则有助于提高可读性。

语法结构

WITH CTE名称
AS (子查询)
SELECT|DELETE|UPDATE 语句;

索引新特性

支持降序索引

降序索引以降序存储键值。虽然在语法上,从MySQL4版本开始就已经支持降序索引的语法了,但实际上该DESC定义是被忽略的,直到MySQL8.x版本才开始真正支持降序索引(仅限InnoDB存储引擎)。
MySQL在8.0版本之前创建的仍然是升序索引,使用时进行反向扫描,这大大降低了数据库的效率。在某些场景下,降序索引意义重大。例如:如果一个查询,需要对多个列进行排序,且顺序要求不一致,那么使用降序索引将会避免数据库使用额外的文件排序操作,从而提高性能。
降序索引只对查询特定的排序顺序有效,如果使用不当,反而查询效率更低。

隐藏索引

在MySQL5.7版本之前,只能通过显式索引的方式删除索引。此时,如果发现删除索引后出现错误,又只能通过显式创建索引的方式将删除的索引创建回来。如果数据库表中的数据量非常大,或者数据表本身比较大,这种操作就会消耗系统过多的资源,操作成本非常高。
从MySQL8.0x开始支持隐藏索引(invisible indexes),只需要将待删除的索引设置为隐藏索引,使查询优化器不再使用这个索引(即使用force index(强制使用索引),优化器也不会使用该索引),确认将索引设置为隐藏索引后系统不受任何影响,就可以彻底删除索引。这种通过先将索引设置为隐藏索引,再删除索引的方式就是软删除
同时,如果你想验证某个索引删除之后的查询性能影响,就可以暂时先隐藏该索引。
注意:主键不能被设置为隐藏索引。当表中没有显式主键时,表中第一个唯一非空索引将会成为隐式主键,也不能设置为隐藏索引。文章来源地址https://www.toymoban.com/news/detail-451782.html

到了这里,关于MySQL8.0概述及新特性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL8新特性:窗口函数(精讲)

    MySQL8新特性:窗口函数(精讲)

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! 假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额: 查询: 需求:

    2024年02月13日
    浏览(7)
  • MySQL8新特性:公用表表达式

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! 公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。 CTE是一个命名的临时结果集,

    2024年02月15日
    浏览(8)
  • 第18章_MySQL8其它新特性

    第18章_MySQL8其它新特性

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: MySQL学习 ✨特色专栏: MySQL学习 🥭本文内容:第18章_MySQL8其它新特性 🖥️个人小站 :个人博客,欢迎大家访问 📚个人知识库: 知识库,欢迎

    2023年04月08日
    浏览(14)
  • 【MySQL】MySQL8.1.0版本正式发布带来哪些新特性?

    【MySQL】MySQL8.1.0版本正式发布带来哪些新特性?

    2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本. Oracle 每季度发布一次 MySQL 更新,所以自己也一直留意的官网的动态,2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本,8.1的应该来说是8.0版本的bug修复,这是 MySQL 变更发版模型后的第一个创新版本 (

    2024年02月13日
    浏览(10)
  • Mysql8.0.x新特性及其性能优化分析

    Mysql8.0.x新特性及其性能优化分析

    8.0.17及之后的版本更新的内容比较多,推荐使用8.0.17及之后的版本。 参考文档: 添加弃用和删除的特性: https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html 添加弃用和删除的参数: https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.ht ml Mysql8 InnoDB 架构: https://dev.mysql.com/doc/refm

    2024年04月26日
    浏览(10)
  • MySQL8.1.0版本正式发布,一起尝鲜新特性

    MySQL8.1.0版本正式发布,一起尝鲜新特性

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等

    2024年02月17日
    浏览(10)
  • mysql8.0.30一些新增特性和xtrabackup的对应

    应客户需求在给mysql实例进行升级之后,(从8.0.2X升级到8.0.3X),发现不能备份成功,查看日志发现是xtrabackup备份时找不到事务日志ib_logfile0。 经过查看,发现data目录下面确实没有这个文件,导致备份失败。 事务日志对于mysql是必要的,它可以保证mysql故障恢复和write-ahead-

    2024年02月09日
    浏览(11)
  • MySQL8 概述、下载、安装、使用(Windows2019和centos7.9)

    MySQL8 概述、下载、安装、使用(Windows2019和centos7.9)

    1.1 数据库相关概念 在这一部分,先了解三个概念:数据库、数据库管理系统、SQL。 名称 全称 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase Management System (DBMS) SQL 操作关系型数据库的编程语言,定

    2024年02月16日
    浏览(11)
  • Java高校学校校园学习资料共享平台系统设计与实现(Idea+Springboot+mysql)

    Java高校学校校园学习资料共享平台系统设计与实现(Idea+Springboot+mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月14日
    浏览(11)
  • 【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射

    【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射

    🍎 个人博客: 个人主页 🏆 个人专栏:   Mybatis    ⛳️   功不唐捐,玉汝于成 目录 前言 正文 一、概述 MyBatis简介 主要特性 1. 动态SQL 2.结果映射 3 .插件机制 二、MyBatis配置文件 1.配置文件结构 数据库连接信息 全局配置 映射器扫描 2.SQL映射文件 SQL语句定义 参数映射和

    2024年02月04日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包