MySQL 5.7的新增功能

MySQL 5.7 具有以下几个方面的新特性

1) 随机 root 密码

MySQL 5.7 数据库初始化完成后,会自动生成一个 root@localhost 用户,root 用户的密码不为空,而是随机产生一个密码。

2) 自定义 test 数据库

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

3) 默认 SSL 加密

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

4) 密码过期策略

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

5) 用户锁

MySQL 5.7 为管理员提供了暂时禁用某个用户的功能,使被锁定的用户无法访问和使用数据库。

6) 全面支持JSON

MySQL 5.7在服务器端提供了一组便于操作 JSON 的函数。存储的方法是将 JSON 编码成 BLOB 后再由存储引擎进行处理。这样,MySQL 就同时拥有了关系型数据库和非关系型数据库的优点,并且可以提供完整的事务支持。

7) 支持两类生成列(generated column)

生成列是通过数据库中的其他列计算得到的一列。当为生成列创建索引时,可以便捷地加快查询速度。MySQL 5.7 支持虚拟生成列和存储生成列。虚拟生成列仅将数据保存在表的元数据中,作为缺省的生成列类型;存储生成列则是将数据永久保存在磁盘上,需要更多的磁盘空间。

8) 引入系统库(sys schema)

系统库中包含一系列视图、函数和存储过程,通过多线程、多进程、组合事务提交和基于行的优化方式将复制功能提高 5 倍以上,用户向外扩充其跨商品系统的工作负载时,得以大幅提升复制的效能和效率。

主要信息详细说明

全面支持JSON:

1. MySQL数据库从5.7.8版本开始,也提供了对JSON 数据类型和函数支持,其使用方式如下: 
CREATE TABLE t1 (jdoc JSON); 
INSERT INTO t1 VALUES(‘{“key1”: “value1”, “key2”: “value2”}’);

2. MySQL对支持JSON的做法是,在server层提供了一堆便于操作JSON的函数,至于存储,就是简单地将JSON编码成BLOB,然后交由存储引擎层进行处理,也就是说,MySQL 5.7的JSON支持与存储引擎有关系,MyISAM 存储引擎也支持JSON 格式。 
MySQL支持JSON以后,总是避免不了拿来与MongoDB进行一些比较。但是,MySQL对JSON的支持,至少有两点能够完胜MongoDB: 
1)  可以混合存储结构化数据和非结构化数据,同时拥有关系型数据库和非关系型数据库的优点 
2)  能够提供完整的事务支持

支持两类生成列(generated column):

1. generated column是MySQL 5.7引入的新特性,所谓generated column,就是数据库中这一列由其他列计算而得。 
例如,知道直角三角形的两条直角边,要求直角三角形的面积。很明显,面积可以通过两条直角边计算而得,那么,这时候就可以在数据库中只存放直角边,面积使用generated column,如下所示:

CREATE TABLE triangle (sidea DOUBLE, sideb DOUBLE, area DOUBLE AS (sidea * sideb / 2));

insert into triangle(sidea, sideb) values(3, 4);

2. 在MySQL 5.7中,支持两种generated column,即virtual generated column和stored generated column,前者只将generated column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将generated column持久化到磁盘上,而不是每次读取的时候计算所得,并且那就是为generate column创建索引。

引入系统库(sys schema):

1. 数据库的主从复制,以前是单一的主从复制,现在支持多台主数据库复制到一台从数据库,比如数据备份。

2. 还对 explain 做了增强,对于当前正在运行查询 explain

3. SQL_Mode 变为Strict mode

   SQL要求更严格,version < 5.6.6 sql_mode 为空,最为宽松,不够严谨。

   5.6.6 < version < 5.7.4

        NO_ENGINE_SUBSTITUTION

   version > 5.7.9

  • ONLY_FULL_GROUP_BY
  • STRICT_TRANS_TABLES
  • NO_ZERO_IN_DATE
  • NO_ZERO_DATE
  • ERROR_FOR_DIVISION_BY_ZERO
  • NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION

4. MySql 5.7对子查询进行了优化,只要Derived table里不包含如下条件就可以进行优化:

  1. UNION clause
  2. GROUP BY
  3. DISTINCT
  4. Aggregation
  5. LIMIT or OFFSET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值