MySQL 5.7 新特性有很多,有以下这些

一、InnoDB变更

  1. 默认存储引擎改为InnoDB:MySQL 5.7将默认存储引擎改为InnoDB,以推动其成为事实标准。这意味着任何未指定存储引擎的表都将使用InnoDB。

CREATE TABLE t1 (id INT); -- 使用InnoDB
  1. 多页表空间:新引入多页表空间,用于代替原来的系统表空间和页文件。每个表空间可容纳多个表,并支持多达128TB的数据。

CREATE TABLESPACE ts_1 ADD DATAFILE 'ts_1.ibd' SIZE 1G;
CREATE TABLE t1 (id INT) TABLESPACE ts_1;
  1. 临时表空间:新增临时表空间的概念,临时表不指定表空间时会使用临时表空间。临时表空间的大小可配置,默认自适应。

SET GLOBAL tmp_table_size = 100*1024*1024;  -- 配置临时表最大空间为100M
CREATE TEMPORARY TABLE t1 (id INT); -- 不指定表空间,使用临时表空间
  1. 自适应哈希索引:新引入自适应哈希索引,可自动调整索引的大小来控制存储空间,并且保持查询性能。

CREATE TABLE t1 (id INT, KEY idx1 (id)) ENGINE=INNODB;

二、安全性提升

  1. 更安全的密码策略:新增更严格的密码策略,包括密码长度限制、大小写混合、特殊字符及历史密码检查等。

SET GLOBAL validate_password_policy=MEDIUM;    -- 设置中等密码强度策略
CREATE USER 'user1' IDENTIFIED BY 'Pass@123';  -- 密码需符合策略
  1. 安全的初始密码:新增初始密码选项,可通过–initialize或–initialize-insecure选项设置root用户初始密码。

mysqld --initialize-insecure --user=mysql   --设置root初始密码,不安全
mysqld --initialize  --设置root复杂初始密码,安全
  1. 自定义test数据库

    MySQL 5.7 默认安装完成后没有 test 数据库。用户可以自行创建 test 数据库并对其进行权限控制。

  2. 默认SSL加密

    MySQL 5.7 采用了更加简单的 SSL 安全访问机制,默认连接使用 SSL 的加密方式。

  3. 密码过期策略

    MySQL 5.7 支持用户设置密码过期策略,要求用户在一定时间过后必须修改密码。

  4. 审计日志:新增审计日志(Audit Log)功能,可记录数据库访问和操作的审计跟踪信息。


SET GLOBAL audit_log_enabled=ON;   -- 启用审计日志
SET GLOBAL audit_log_exclude_users='MYSQL.EVENT';  -- 排除事件用户

三、性能优化

  1. SQL临时表现在存储在内存中:SQL临时表现在默认存储在内存临时表空间中, 之前使用磁盘空间,新特性可提升查询性能。

CREATE TEMPORARY TABLE t1 (id INT); -- 临时表存储在内存中
  1. Descending Indexes:新增降序索引,可加速降序查询。

CREATE TABLE t1 (id INT, KEY (id DESC));  -- 降序索引
SELECT * FROM t1 ORDER BY id DESC; -- 使用降序索引,性能提升
  1. JSON支持:新增JSON数据类型,可有效存储和查询JSON文档。JSON类型数据可直接索引,查询性能较高。

CREATE TABLE t1 (jdoc JSON);
INSERT INTO t1 VALUES('{"name": "zhou", "age": 30}');
SELECT * FROM t1 WHERE jdoc->"$.name" = "zhou";   -- JSON查询使用->
  1. 子查询优化:优化器现在可以将IN子查询转换为JOIN查询,提高查询效率。

SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);
-- 上述查询可能被优化为JOIN查询

四、GIS及空间函数增强

  1. 新的GIS函数:新增多个GIS函数,如ST_Distance()、ST_Intersection()、ST_IsValid()等,用于计算几何对象之间的距离、交集以及判断几何对象的有效性。

SELECT ST_Distance(pt1, pt2) AS distance
FROM points;  -- 计算两个点之间的距离SELECT ST_Intersection(ls1, ls2) AS intersect
FROM lines; -- 找出两条线的交点
  1. 空间参照系支持:支持使用空间参照系定义GIS数据。可定义投影坐标系及地理坐标系(WGS 84)等。

CREATE TABLE geom (g GEOMETRY(POINT, 4326));  -- 使用WGS 84坐标系
  1. R-Tree索引 improve:R-Tree索引进行改进,支持更多几何类型并优化性能。R-Tree索引可用于空间查询和邻域分析。

CREATE INDEX idx ON geom (g) USING RTREE; -- 在geom表创建R-Tree索引

五、新增fractional seconds时钟

时钟精度提高到微秒级(6位)。可用于需要高精度的场景,如高频交易记录。


CREATE TABLE t1 (ts TIMESTAMP(6),   -- 精确到微秒dt DATETIME(6)     -- 精确到微秒
);INSERT INTO t1 VALUES(NOW(6), NOW(6));   -- NOW()也可达微秒精度

六、SQL模式及用户权限控制增强

  1. 增强的 用户权限控制:用户权限控制支持授予和回收更细致的权限,实现更高的安全性要求。

GRANT SELECT (id, name) ON db1.t1 TO 'user1'@'localhost';
-- 仅授权用户查询t1表的id和name字段REVOKE INSERT ON db1.t1 FROM 'user1'@'localhost';
-- 回收user1用户对db1.t1表的插入权限
  1. 全面支持SQL标准模式:全面支持SQL标准模式概念,提供更高级的数据库封装及权限管理。

CREATE SCHEMA scm1;                  -- 创建模式
CREATE TABLE scm1.t1 (id INT);      -- 创建模式下的表
GRANT ALL ON scm1.t1 TO 'user1';    -- 授权用户对模式中的表操作权限

七、新增AFTER命令

新增AFTER DDL触发器(Trigger)可在DDL语句执行后触发,主要用于审计和日志记录。


CREATE TRIGGER trig1
AFTER CREATE ON SCHEMA db1  --  在db1模式执行CREATE语句后触发
FOR EACH STATEMENT
BEGININSERT INTO logs VALUES (NOW());  -- 向logs表插入一条记录
END;

CREATE TABLE db1.t1; – 执行一条CREATE语句,会触发AFTER触发器插入一条日志。

八、新增许多系统变量和状态变量

用于确定和控制 MySQL 的许多方面行为。主要包括:

  1. audit_log_xxx:控制审计日志行为的相关变量。

  2. default_password_lifetime:控制密码过期时间的变量。

  3. validate_password_xxx:控制密码策略相关变量。

  4. innodb_xxx:控制InnoDB存储引擎行为的众多变量。如innodb_file_per_table控制表空间等。

  5. sql_require_primary_key:强制要求生成的表必须有主键。

  6. log_throttle_xxx:控制日志记录频率的相关变量。示例:


SET GLOBAL audit_log_enabled=ON;   -- 启用审计日志
SET GLOBAL validate_password_length=10;  -- 设置密码最小长度为10
SET GLOBAL innodb_file_per_table=ON;   -- 启用文件每个表一个表空间
SET GLOBAL sql_require_primary_key=ON;  -- 要求表必须有主键

九、MySQL 5.7提供了CONTROL插件,用于限制连接数或特定主机的最大连接数。

可用于保护MySQL免受拒绝服务攻击或限制资源的连接。安装插件:


INSTALL PLUGIN conn_control SONAME 'conn_control.so';

示例限制root用户最大10个连接及来自主机192.168.0.1的连接数至多3个:


SELECT * FROM mysql.conn_control WHERE USER='root' AND HOST='localhost';
UPDATE mysql.conn_control SET MAX_CONNECTIONS=10 WHERE USER='root' AND HOST='localhost';SELECT * FROM mysql.conn_control WHERE HOST='192.168.0.1';
INSERT INTO mysql.conn_control (HOST,MAX_CONNECTIONS) VALUES('192.168.0.1',3);

十、资源组新增资源组功能

可用于将MySQL资源(如CPU,内存)划分为不同组,并控制每个组可使用的资源量。可增加QoS,为不同的工作负载或用户提供不同级别的服务。创建资源组:


CREATE RESOURCE GROUP rg1 TYPE = USER  VCPU = 2     -- 最多使用2个CPU MEMORY_LIMIT = 1073741824; -- 最大内存1GB

将用户添加到资源组:


GRANT USAGE ON *.* TO 'user1'@'localhost' REQUIRE RESOURCE GROUP rg1;

user1用户连接时,会被限定在rg1资源组中,最大可使用2个CPU和1GB内存。

十一、支持两类生成列(generated column)

MySQL 5.7 支持虚拟生成列和存储生成列。虚拟生成列仅将数据保存在表的元数据中,作为缺省的生成列类型;存储生成列则是将数据永久保存在磁盘上,需要更多的磁盘空间。

综上

MySQL 5.7中新增特性涉及较广,主要在提高安全性、优化性能、增强GIS及模式控制等方面。熟练掌握这些新特性,可更高效地使用和管理MySQL 5.7数据库。

【MySQL】MySQL 5.7 新特性整理相关推荐

  1. mysql5.0版本特性_mysql各版本的新特性整理

    mysql各版本的新特性整理 一.各版本的常用命令差异 show innodb status\G mysql-5.1 show engines innodb status\G mysql-5.5 关于 ...

  2. 宋利兵 mysql_《MySQL 5.7 Replication新特性》分享之互动问题解答

    分享主题 <MySQL 5.7 Replication新特性> 嘉宾介绍 宋利兵,MySQL研发工程师.2009年加入MySQL全球研发团队,从事MySQL复制相关功能的开发. 主题介绍 ...

  3. two+few+arguments+php,PHP5.5 ~ PHP7.2 新特性整理

    PHP5.5 ~ PHP7.2 新特性整理 一.从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认 ...

  4. Swift 3到5.1新特性整理

    本文转载自:https://hicc.me/whats-new-in-swift-3-to-5-1/,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有. Hipo 2.0 重写从 Swif ...

  5. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

  6. 【MySQL】MySQL5.6新特性之Index Condition Pushdown

    一 概念介绍     Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式. a 当关闭ICP时,inde ...

  7. MySQL 5.1.40新特性及下载

    MySQL是现在最流行一个多线程的,结构化查询语言(SQL)数据库服务器.绝大多数PHP网站的数据库后台都是采用这一数据库. MySQL 的执行性能非常高,运行速度非常快,并非常容易使用.是一个非常捧 ...

  8. rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID]

    1.mysql5.6在复制方面的新特性: (1).支持多线程复制:事实上是针对每个database开启相应的独立线程,即每个库有一个单独的(sql thread).针对这样的改进,如果我们想实现多线程 ...

  9. mysql sdi_MySQL 8.0新特性: 数据字典

    一.概述 数据字典(Data Dictionary)中存储了诸多数据库的元数据信息,包括基本Database, table, index, column, function, trigger, pro ...

最新文章

  1. vs2008 外部调用ActiveX控件接口方法
  2. 规格表管理之查询获取规格表列表数据
  3. 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
  4. 扩展和修改 Enterprise Library 缓存应用程序块
  5. Java关于 class类的基础方法
  6. docker java 最小镜像_Docker多步构建更小的Java镜像
  7. U盘安装CentOS7的最终解决方案
  8. 用例图中三种关系详解(转)
  9. 五矿系30亿项目未经环评私行上马遭环保部叫停
  10. LTE学习笔记--LTE整体架构和协议架构概述
  11. 选择排序为什么是不稳定的?
  12. excel行列互换_excel行列互换方法流程
  13. kill -HUP重启mysql_kill的用法和例句,包括kill常用短语解释和词组意思翻译,同义词,反义词【澳典网ODict.Net】...
  14. 20.04Ubuntu安装桌面系统详细教程
  15. B站有哪些值得Java初学者看的视频,Java学习路线
  16. 2440开发板,210开发板,imx6开发板和4412开发板选择哪个更好呢?
  17. 嗓子不舒服怎么办?咽干咽痛痰多咳嗽怎么办?
  18. iis was错误_IIS报错,网站无法访问,
  19. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(一)
  20. 初探串口输出六轴陀螺仪

热门文章

  1. 宝鲲财经炒外汇必知技巧概述
  2. Excel2007使用技巧
  3. 统一手机充电器标准的好处
  4. 这个库能轻松解决98%的异步和逻辑加载时机问题(异步篇)
  5. vue可拖拽排序列表组件
  6. 关于Typora与Gitee码云之间的问题
  7. 金华计算机学校取分,2021年金华高中学校排名及录取分数线排名
  8. Http请求参数详解
  9. PyQt5 教程 《绘画》
  10. “钓鱼”游戏组件的应用模式是不是有些急功近利了?