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. Nature子刊:Neuropixels 探针单神经元分辨率的大规模神经记录
  2. log4j使用方法(一)——先跑起来再说
  3. 【Android 逆向】加壳的 Android 应用启动流程 | 使用反射替换 LoadedApk 中的类加载器流程
  4. 第五人格每天服务器维护多长时间,第五人格:每天玩的时间并不长,大概一天1-5局...
  5. TurboLinux11system»adjtimex简介
  6. BP神经网络及matlab实现
  7. 没毛病!00后和90后成为暑期出游两大主力群体
  8. [Effective JavaScript 笔记]第23条:永远不要修改arguments对象
  9. PAT甲级1054 map的使用
  10. js怎么给div加滑动条 vue给弹出层加滑动条(一分钟学会用js加滚动条)
  11. csdn如何修改文字体及颜色
  12. 【DL小结1】DL入门
  13. js分页组件laypage
  14. 青云科技成为开源 GitOps 产业联盟会员
  15. 技法の穴をふさぐ:工数編 --技法の穴をふさぐ:工数編
  16. cf修改游戏客户端是什么意思_穿越火线修改游戏名方法
  17. 哈希计划(河南省多校联盟第六次)
  18. 利用qt播放音频数据
  19. hdoj 1225 football sorce(尝试了50次的水题)
  20. VS2013 professional版本密钥激活码

热门文章

  1. SSO单点登录系统搭建(附源码)
  2. res.setHeader()和res.writeHead()
  3. Python37 安装pip
  4. SpringBoot用实体接收Get请求参数
  5. 文件上传(transferTo)
  6. MurmurHash 算法生成短链接
  7. python中查看关键字需要在python解释器中执行_Day09-python基础之Cpython解释器支持的进程与线程...
  8. MySQL之——CentOS6.5_x64安装配置drbd8.4.2
  9. 全方位深入理解JavaScript面向对象
  10. 多线程/高并发下的HashMap