MySQL8.0与MySQL5.7的区别详解

 更新时间:2023年01月13日 08:51:40   作者:hzsnone  
MySQL8.0是2018年4月20日发布的全球最受欢迎的开源数据库的一个非常令人兴奋的新版本,下面这篇文章主要给大家介绍了关于MySQL8.0与MySQL5.7区别的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1.隐藏索引

隐藏索引的特性对于性能调试非常有用,在8.0 中,索引可以被隐藏和显示,当一个索引隐藏时,他不会被查询优化器所使用,性能调试使用;
隐藏索引

ALTER TABLE t ALTER INDEX i INVISIBLE;
#例子
ALTER table public_fund_announce  ALTER INDEX idx_fund_id  INVISIBLE;

恢复索引

ALTER TABLE t ALTER INDEX i VISIBLE;

2.用户创建,修改和授权

默认 身份认证的插件是caching_sha2_password,需要对应的客户端才能登陆,如果需要兼容,可以在设置密码时 加入WITH mysql_native_password;

并且创建用户与授权需要分开执行;

例如

create user dbadmin@'%' identified WITH mysql_native_password by '密码';
alter user dbadmin@'%' identified WITH mysql_native_password by '密码';
flush privileges;

3.设置持久化

MySQL 的设置可以在运行时通过 SET GLOBAL 命令来更改,但是这种更改只会临时生效,到下次启动时数据库又会从配置文件中读取。
MySQL 8 新增了 SET PERSIST 命令,例如:

SET PERSIST max_connections = 500;

MySQL 会将该命令的配置保存到数据目录下的 mysqld-auto.cnf 文件中,下次启动时会读取该文件,用其中的配置来覆盖缺省的配置文件。

4.UTF-8编码

从 MySQL 8 开始,数据库的缺省编码将改为 utf8mb4,这个编码包含了所有 emoji 字符;

5.通用表表达式(Common Table Expressions)

复杂的查询会使用嵌入式表,例如:

SELECT t1.*, t2.* FROM
     (SELECT col1 FROM table1) t1,
     (SELECT col2 FROM table2) t2;

而有了 CTE,我们可以这样写:

WITH
t1 AS (SELECT col1 FROM table1),
t2 AS (SELECT col2 FROM table2)
SELECT t1.*, t2.*
FROM t1, t2;

这样看上去层次和区域都更加分明,改起来也更清晰的知道要改哪一部分。
这个特性在很多报表场景是很有用的,也是mysql优化的一个很重要特性。

6.参数变化

query_cahe参数已经不存在,设置会报错

binglog过期时间参数变更为

binlog_expire_logs_seconds = 432000

7.性能提升

官方表示速度比5.7快两倍,尤其在工作负载高,高竞争时间时;待测试验证,查询count确实有一定提升;

8.NoSQL文档支持

MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。

9.窗口函数

在这里创建了名为 w 的 window,规定它对 stu_count 字段进行排序,然后在 select 子句中对 w 执行 rank() 方法,将结果输出为 rank 字段。

10.其他

提供授权角色概念,可以把权限授权给role,然后把角色给到指定用户,方便权限细化管理。

参考官方文档:https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-nutshell.html

参考其他:https://www.php.cn/mysql-tutorials-464447.html

到此这篇关于MySQL8.0与MySQL5.7区别的文章就介绍到这了,更多相关MySQL8.0与MySQL5.7区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • MySQL数据库操作DML 插入数据,删除数据,更新数据

    MySQL数据库操作DML 插入数据,删除数据,更新数据

    这篇文章主要介绍了MySQL数据库操作DML插入数据,删除数据,更新数据,DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新
    2022-07-07
  • Centos 6.3将Mysql 5.1.61升级为mysql 5.6.19遇到的问题及解决方式

    Centos 6.3将Mysql 5.1.61升级为mysql 5.6.19遇到的问题及解决方式

    mysql5.6.19已经发布很久了,一直没有去升级,最近做项目需要mysql5.5以上,索性直接上5.6.19吧,原本以为升级这种事情,分分钟就完成了,没想到还是出了各种问题,下面把部分记录分享给大家
    2014-07-07
  • 详解如何在MySQL中自动生成和更新时间戳

    详解如何在MySQL中自动生成和更新时间戳

    在数据库设计中,时间戳字段(如 create_time 和 update_time)是非常常见的需求,它们通常用于记录数据的创建时间和最后更新时间,以便于数据追踪和分析,本文将深入探讨如何在 MySQL 中设置自动生成和更新时间戳字段,需要的朋友可以参考下
    2025-02-02
  • MySQL Workbench操作图文详解(史上最细)

    MySQL Workbench操作图文详解(史上最细)

    Workbench是MySQL最近释放的可视数据库设计工具,这个工具是设计 MySQL数据库的专用工具,下面这篇文章主要给大家介绍了关于MySQL Workbench操作的相关资料,需要的朋友可以参考下
    2023-03-03
  • mysql命令行如何操作

    mysql命令行如何操作

    这篇文章主要介绍了mysql命令行如何操作,还为大家分享了mysql添加环境变量的方法,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 查看MySQL初始密码并修改的正确方式

    查看MySQL初始密码并修改的正确方式

    这篇文章主要给大家介绍了关于查看MySQL初始密码并修改的正确方式,MySQL是一款广泛使用的开源关系型数据库管理系统,安装后找回初始密码是MySQL使用中的一个基础问题,需要的朋友可以参考下
    2023-10-10
  • mysql 5.7.16 免安装版安装配置方法图文教程

    mysql 5.7.16 免安装版安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.16 免安装版安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • mysql5.5 master-slave(Replication)主从配置

    mysql5.5 master-slave(Replication)主从配置

    在主机master中对test数据库进行sql操作,再查看从机test数据库是否产生同步。
    2011-07-07
  • MySQL对标准SQL的扩展方式

    MySQL对标准SQL的扩展方式

    MySQL对标准SQL的扩展包括磁盘上的数据组织方式、通用语言语法、SQL语句语法、数据类型、函数和运算符等,这些扩展使得MySQL在某些方面与其他SQL数据库管理系统不同
    2025-02-02
  • 详解Mysql之mysqlbackup备份与恢复实践

    详解Mysql之mysqlbackup备份与恢复实践

    这篇文章主要介绍了详解Mysql之mysqlbackup备份与恢复实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论