【MySQL数据库】18 MySQL8其它特性

本文介绍了MySQL8的新增特性,包括NoSQL支持、索引优化、JSON功能增强、安全与账户管理改进以及InnoDB的升级。重点讲解了窗口函数和公用表表达式(CTE)的使用,展示了它们如何简化复杂查询和提高查询效率。窗口函数允许对数据进行分组和排序,而CTE则提供了可复用的临时结果集,支持递归查询,提高了SQL查询的灵活性和可读性。
摘要由CSDN通过智能技术生成


第18章  MySQL8其它特性

创作日期:2021-12-03

        MySQL 从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimlzer优化器进行了改进。不仅在速度上得到了改进,还为用户带来了更好的性能和更棒的体验。


1.MySQL8新特性概述

1.1 MySQL8.0 新增特性

  • 更简便的NoSQL支持

        NoSQL泛指非关系型数据库和数据存储。随着发展,传统的关系型数据库已经越来越不能满足需求。从5.6版本开始,MySQL就开始支持简单的NoSQL存储功能。MySQL8 对这一功能做了优化,以更灵活的方式实现NoSQL功能,不再依赖模式(schema)。

  • 更好的索引

        在查询中,正确地使用索引可以提高查询的效率。MySQL8 中新增了 隐藏索引 降序索引。隐藏索引可以用来测试去掉索引对查询性能的影响。在查询中混合存在多列索引时,使用降序索引可以提高查询的性能。

  • 更完善的JSON支持

        MySQL 从5.7开始支持原生JSON数据的存储,MySQL8 对这一功能做了优化,增加了聚合函数 JSON_ARRAYAGG() 和 JSON_OBJECTAGG(),将参数聚合为JSON数组或对象,新增了行内操作符 ->>,是列路径运算符 ->的增强,对JSON排序做了提升,并优化了JSON的更新操作。

  • 安全和账户管理

        MySQL8 中新增了 caching_sha2_password 授权插件,角色,密码历史记录和FIPS模式支持,这些特性提高了数据库的安全性和性能,使数据库管理员能够更灵活地进行账户管理工作。

  • InnoDB的变化

        InnoDB 是 MySQL 默认存储引擎,是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。在MySQL8 版本中,InnoDB在自增,索引,加密,死锁,共享锁等方面做出了大量的 改进和优化 ,并且支持原子数据定于语言(DDL),提高了数据安全性,对事务提供了更好的支持。

  • 数据字典

        在之前的MySQL版本中,字典数据都存储在元数据文件和非事务表中。从MySQ提交。对于MySQL5.7复制到MySQL8 版本中的语句,可以添加 IF EXISTS 或 IF NOT EXISTS 语句来避免发生错误。

  • 原子数据定义语句

        MySQL8 开始支持原子数据定义语句(Automic DDL),及原子DDL。目前,只有InnoDB存储引擎支持原子DDL。原子数据定义语句(DDL)将与DDL操作相关的数据字典更新,存储引擎操作,二进制日志写入结合到一个单独的原子事务中,这使得即使服务器崩溃,事务也会提交或回滚。

        使用支持原子操作的存储引擎所创建的表,在执行DROP TABLE,CREATE TABLE ,ALTER TABLE, RENAME TABLE,TRUNCATE TABLE,DROP TABLESPACE ,CREATE TABLESPACE等操作时,都支持原子操作,即事务要么完全操作成功,要么失败后回滚,不再进行部分提交。对于从MySQL5.7 复制到 MySQL8 版本中的语句,可以添加 IF EXISTS 或 IF NOT EXISTS 语句来避免发生错误。

  • 资源管理

        MySQL8 开始支持创建和管理资源组,允许将服务器内运行的线程分配给特定的分组,以便线程根据组内可用资源执行。组属性能够控制组内资源,启用或限制组内资源消耗。数据库管理员能够根据不同的工作负载适当的更改这些属性。       

        目前,CPU时间是可控资源,由“虚拟CPU”这个概念来表示,此术语包含CPU的核心数,超线程,硬件线程等等。服务器在启动时确定可用的虚拟CPU数量。拥有对应权限的数据库管理员可以将这些CPU与资源组关联,并为资源组分配线程。

        资源组组件为MySQL中的资源组管理提供了SQL接口。资源组的属性用于定义资源组。MySQL中存在两个默认组,系统组和用户组,默认的组不能被删除,其属性也不能被更改。对于用户自定义的组,资源组创建时可初始化所有的属性,除去名字和类型,其他属性都可以在创建之后进行更改。

        在一些平台下,或进行了某些MySQL的配置时,资源管理的功能将受到限制,甚至不可用。例如,如果安装了线程池插件,或者使用的是macOS系统,资源管理将处于不可用状态。在FreeBSD和Solaeis系统中,资源线程优先级将失效。在Linux系统中,只有配置了CAP_SYS_NICE 属性,资源管理优先级才能发挥作用。

  • 字符集支持 

        MySQL8 中默认的字符集由 latin1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深山老Java

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值