安全的提升
1.1 在Mysql 8版本中,caching_sha2_password 是一个缺省的认证插见.5.7 版本的客户端支持 caching_sha2_password 的客户端认证。
1.2 用户表mysql.user要求plugin字段非空,且默认值是mysql_native_password,并且不再支持mysql_old_password
1.3 增加了密码过期特性。
1.4 管理员可以对普通用户加锁/解锁来控制用户的访问权限
1.5 为更容易支持安全连接,使用OpenSSL编译的MySQL服务器可以在启动时自动生成SSL和RSA证书以及密钥文件
1.6 使用 mysqld --initialize 代替 mysql_install_db 对数据库进行初始化。
a 只创建一个 root账号,并且生成一个临时的标记为过期密码
b 不创建其他账号
c 不创建test 数据库 SQL mode的变换
2.1 默认的SQL_MODE:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.
a 语句:SELECT deptno,ename,max(sal) FROM emp GROUP BY deptno; 在mysql5.6中可以正常执行,但在mysql5.7中会报语义异常。观察发现:ename 即不在聚集函数中,也没有出现在group by list中。对于语义限制比较严谨的数据库,如Oracle是不支持select target list中出现语义不明确的列,这样的语句在这些数据库中是会被报错的,这也是SQL92的标准。所以从MySQL 5.7版本开始修正了这个语义,就是我们所说的ONLY_FULL_GROUP_BY语义。
b STRICT_TRANS_TABLES 是说要存储的字段的长度大于字段定义的大小,直接报错而非像5.6版本以及之前,截断数据进行存储,同时抛出一个warning
2.2 online ddl 支持 rename index name。更改是以 in place方式进行的,不会伴随table-copy的操作。
2.3 新增内置的full text 插件,支持中文 ,韩文,日文全文索引

InnoDB 功能的增强

3.1 以 in-place 方式动态修改 varchar 长度大小。但存在限制,即表示 varchar 列长的字节不能变化。(专门存在一或两个字节记录 varchar 列的长度。varchar列的长度在0-255字节长度时,只需要一个字节记录 varchar 列的长度;varchar列的长度超过255字节长度时,需要两个字节记录 varchar 列的长度。)如果字段的长度从254增到256时就不能使用in-place算法,必须使用copy算法,否侧报错.需要注意的是 减小 varchar(N)长度的大小必须使用copy类型。
3.2 临时表
通过对CREATE TABLE, DROP TABLE, TRUNCATE TABLE, and ALTER TABLE 语句的优化, 提升了涉及临时表的DDL语句的性能。
临时表的元数据信息不再存储 InnoDB 系统表中,而是记录到新表 INNODB_TEMP_TABLE_INFO中。
3.3 临时表空间
新增一个独立的表空间用来存储非压缩的临时表。Mysql启动时,这个临时表空间会被自动创建。可以通过innodb_temp_data_file_path定义临时表空间的路径。
3.4 新增临时表的undo日志
针对临时表及相关对象引入新的 non-redo undo log,存放在临时表空间。该类型的undo log非 redolog, 因为临时表在数据库崩溃后不需要恢复,也就无需redo logs,避免了写relog相关的io,从而提高了性能。
3.5 新增空间类型 DATA_GEOMETRY
InnoDB 现在支持 MySQL-supported 空间数据库类型。之前版本,InnoDB使用binary BLOB 类型存储空间类型数据。现在空间数据类型被映射到了一个InnoDB内部数据类型DATA_GEOMETRY.
3.6 innochecksum 功能被提升
innochecksum--离线的InnoDB文件校验工具,新增了新的选择项和扩展的功能
3.7 对Fusion-io NVM 文件系统的优化
Linux系统中Fusion-io Non-Volatile Memory (NVM)文件系统提供了原子写能力,使InnoDB的doublewrite变得冗余。
因此,如果Fusion-io设备支持原子写, MySQL系统会自动关闭doublewrite,减少IO,提升性能。
3.8 支持移动表空间 Transportable Tablespace
简化了分区表的备份过程,并支持在MySQL实例之间复制分区表和单个表分区。
3.9 支持动态调整 innodb_buffer_pool_size
支持在不重启系统的情况下动态调整innodb_buffer_pool_size。resize的过程是以chunk为单位迁移pages到新的内存空间。
chunk的大小可通过innodb_buffer_pool_chunk_size配置。
迁移进度可以通过Innodb_buffer_pool_resize_status 查看。
3.10 InnoDB在创建或重建索引时执行批量加载。这种创建索引的方法称为“sorted index build”。这种增强也适用于全文索引,它提高了索引创建的效率。在排序索引构建期间,innodb_fill_factor定义了每个页面上的空间百分比是用来填充数据的,剩余空间预留给未来索引增长
3.11 新增一个新的日志记录类型(MLOG_FILE_NAME)用于标识自上次检查点以来被修改的表空间。这个增强简化了表空间的恢复。
3.12 支持truncate undo logs,相关启用参数 innodb_undo_log_truncate
3.13 支持本地分区。在之前版本中,InnoDB 依赖 ha_partition handler,它会为每一个分区创建一个 handler 对象。对于本地分区,InnoDB分区表只是用一个单独的 partition-aware handler 对象。这样的分区表功能增强节约分区表使用的内存。
3.14 支持 General Tablespaces。可以在MySQL数据目录之外创建,能够容纳多个表,支持所有行格式的表
3.15 InnoDB表的隐式默认行格式为DYNAMIC。相关参数 innodb_default_row_format
3.16 MySQL 5.7.11 开始,InnoDB支持file-per-table表空间的静态数据加密 支持JSON类型
MySQL 5.7.8开始支持本地化JSON类型。JSON值不是以string类型存储的,而是以内部的binary格式存储,有利于快速读取。
MySQL 5.7.8开始提供了一些与JSON相关的函数:
Functions that create JSON values: JSON_ARRAY(), JSON_MERGE(), and JSON_OBJECT().
Functions that search JSON values: JSON_CONTAINS(), JSON_CONTAINS_PATH(), JSON_EXTRACT(), JSON_KEYS(), and JSON_SEARCH().
Functions that modify JSON values: JSON_APPEND(), JSON_ARRAY_APPEND(), JSON_ARRAY_INSERT(), JSON_INSERT(), JSON_QUOTE(), JSON_REMOVE(), JSON_REPLACE(), JSON_SET(), and JSON_UNQUOTE().
Functions that provide information about JSON values: JSON_DEPTH(), JSON_LENGTH(), JSON_TYPE(), and JSON_VALID(). sys schema
MySQL 5.7 新增加了sys schema,sys schema方便性能调优和问题定位。 Optimizer
EXPLAIN 可以通过指定会话id 获取该会话执行sql的执行计划。
增强了hint的功能 Triggers
Mysql 5.7之前版本,对于触发器事件(INSERT, UPDATE, DELETE)和操作时间(BEFORE, AFTER)的组合,表最多只能有一个触发器。这个限制已经解除,允许多个触发器。 Logging
Mysql 5.7之前版本,在Unix和类Unix系统上,MySQL将错误日志发送到syslog是通过mysqld_safe捕获错误输出然后传递到syslog来实现的。新的版本支持将错误日志输出到syslog,且适用于windows系统,只需要通过简单的参数(log_syslog等)配置即可
Mysql客户端现在有一参数--syslog ,该参数可将在交互式模式下执行过的命令输出到syslog中。对于匹配“ignore”过滤规则(可通过 –histignore选项或者 MYSQL_HISTIGNORE环境变量进行设置)的语句不会被记入 Generated Columns
在MySQL 5.7中,支持两种Generated Column,
1 Virtual Generated Column :只将Generated Column保存在数据字典中表的元数据,每次读取该列时进行计算,并不会将这一列数据持久化到磁盘上;
注意:MySQL 5.7.8 以前 虚拟列字段不支持创建索引。5.7.8之后Innodb支持在虚拟列创建辅助索引。
2 Stored Generated Column : 将Column持久化到存储,会占用一定的存储空间。与Virtual Column相比并没有明显的优势,因此,MySQL 5.7中,不指定Generated Column的类型,默认是Virtual Column。 Index condition pushdown support for partitioned tables
在MySQL 5.7中,分区表也开始支持ICP特性 Master dump thread improvements
在MySQL 5.7.2之前,转储线程在每次读取事件时都对二进制日志进行锁定;在MySQL 5.7.2或更高版本中,只有在最后一次成功写入事件结束时读取位置时才持有此锁。

MySql 5.7 新特性概览的更多相关文章

  1. 你不知道的JavaScript--Item24 ES6新特性概览

    ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ...

  2. [转帖 ]MySQL 5.7 新特性 JSON

    MySQL 5.7 新特性 JSON 的创建,插入,查询,更新 作者: 我不是鱼 (2016-08-31 16:13)分类: MySQL   标签: MySQL JSON MySQL JSON 应用 ...

  3. Mysql 8.0 新特性测试

    Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...

  4. C# 8.0 的新特性概览和讲解

    本文转自 https://blog.csdn.net/hez2010/article/details/84036742 C# 8.0 的新特性概览和讲解 前言 新的改变 可空引用类型(Nullable ...

  5. MySQL 8.0 新特性梳理汇总

    一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5---GA发布后,5年 就停止通用常规的更新了(功能不再更新了): 3---企业版的,+3年功能不再更新了: 3 ---完全停止更新 ...

  6. MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  7. 初识 MySQL 5.6 新特性、功能

    背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...

  8. MySQL 5.7新特性之generated column

    MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  9. MySQL 5.6新特性 -- Multi-Range Read

    如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问.使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只是扫描索 ...

随机推荐

  1. Tomcat热部署SpringMVC项目出错

    一.问题 项目照常跑,没有什么大的影响,但是在控制台却出现了错误,具体信息如下图所示 二.解决方法 原因分析:很多人已经说的很明白了,这大概是因为项目文件很多,在tomcat重启的时候,之前的tomc ...

  2. 使用GPStracker自建卫星定位跟踪平台

    经常有人问,我能不能手机定位跟踪谁谁谁,我能不能定位跟踪我的车,等等问题. 话说不难,确实,需要客户端和服务端结合起来就能实现. 今天就给大家介绍一下GPStracker,一套开源的定位跟踪系统,有手 ...

  3. testng.xml 配置大全

    1.TestNG的运行方式如下: 1 With a testng.xml file 直接run as test suite 2 With ant 使用ant 3 From the command li ...

  4. Eureka服务注册中心相关错误com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect

    启动项目报错如下 原因: 在默认设置下,Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,所以会出现 com.sun.jersey.api.client.ClientHandlerExce ...

  5. 【SqlServer】SqlServer的异常处理

    在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常 ...

  6. 译: 2. RabbitMQ Spring AMQP 之 Work Queues

    在上一篇博文中,我们写了程序来发送和接受消息从一个队列中. 在这篇博文中我们将创建一个工作队列,用于在多个工作人员之间分配耗时的任务. Work Queues 工作队列(又称:任务队列)背后的主要思想 ...

  7. Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结

    Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结 1.1. 常见的编程语言以及数据库 sql内部函数库标准化库一般有以下api1 1.2. 各个 ...

  8. epoll的由来

    reference https://www.zhihu.com/question/20122137 感谢 @静海听风 @蓝形参 数据流有两个重要的参与者: 1.往流中写入数据者 2.从流中读取数据者 ...

  9. 每日英语:Dashing the China Dream

    Much has been said about what the 'China Dream' really means to many Chinese -- whether it is nation ...

  10. GDB用法简要整理

    [时间:2017-05] [状态:Open] [关键词:gdb,调试,debug,用户手册] 使用gdb是需要在编译是指定-g命令,在可执行文件中添加符号信息. 1. 启动和退出 可以使用gdb gd ...