安全的提升
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. Date与Quartz的cron之间的相互转换

    1.概述 最近在写一个Quartz相关的模块,需要实现Date与Quartz的cron之间的相互转换,在网上查了一下竟然没有找到,但是找到一份这样的博客:http://hw1287789687.ite ...

  2. chapter15中使用generator来实现异步化操作的同步化表达的例子

    在p203中作者给了一个例子,我感觉这个例子写的不好,一开始我没有看懂,因为中间有很多细节没有交代,直到看了第二个用generator来实现ajax的例子之后才有所领悟.   所以我把作者给的这个用g ...

  3. 解决netaddr不能安装0.7.6以上版本

    今天在Jenkins上添加了两个新jobs,但是同事提交代码后的自动测试运行出现错误.查看原因是tox命令在安装包依赖的时候,找不到大于0.7.6以上的版本,但可是我们明明安装过0.7.10了呀. 后 ...

  4. docker安装hive笔记

    前两篇文章介绍了docker的基本命令如何安装hadoop 那么大家会比较了解docker的基本语法的安装过程.那么咱们今天来一起安装一下hive. 安装 1.下载gitHub,地址:https:// ...

  5. Linux下利用backtrace追踪函数调用堆栈以及定位段错误[转]

    来源:Linux社区  作者:astrotycoon 一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序 ...

  6. 各类nosql db的功能与性能对比

    mongodb cassandra neo4j couchbase couchdb redis leveldb

  7. 【读书笔记】Data_Mining_with_R---Chapter_2_Predicting Algae Blooms

    本书概要 <Data Mining with R>这本书通过实例,并结合R讲解数据挖掘技术.本书的核心理念就是"Learning it by doing".本书分5章, ...

  8. Android Launcher分析和修改3——Launcher启动和初始化

    前面两篇文章都是写有关Launcher配置文件的修改,代码方面涉及不多,今天开始进入Launcher代码分析. 我们开机启动Launcher,Launcher是由Activity Manager启动的 ...

  9. 【GMT43液晶显示模块】发布原理图、出厂代码

    GMT43是一款内置4.3寸真彩液晶显示模块,其内置高速ARM Cortex-M4处 理器,主频高达180MHz,并包含丰富的外设接口. GMT43拥有丰富的资源,包含RS-232,RS-485,RS ...

  10. 【Unity】ShareSDK、SMSSDK的基本使用与常见问题

    概要 测试使用ShareSDK的一些常用功能.包括: 用微博帐号做第三方登录 获取用户的帐号详细信息 获取好友列表 分享功能 测试使用SMSSDK插件,包括: 导入插件,解决包冲突 短信登录功能:发验 ...