Mysql5.7新特性_MySQL
Mysql在被sun,继而被oracle收购之后,并没有被oracle这个巨人雪藏,反而近几年的发展速度极为之快,谁都知道,你oracle做不好mysql,开源的市场就会被别人取代,pg,MariaDB,percona server,如果说开源又不挣钱,我就只能呵呵了。这里我选的版本是最新的开发版,5.7.8.只为了看一下最新最近的技术,当然,这个版本是不可能被用到生产中去的,因为还不够成熟,还需要在实验室呆上很久,如果说mysql5.6已经做的够好了,那么mysql5.7一定会让你眼前一亮。 Mysql在被sun,继而被oracle收购之后,并没有被oracle这个巨人雪藏,反而近几年的发展速度极为之快,谁都知道,你oracle做不好mysql,开源的市场就会被别人取代,pg,MariaDB,percona server如果说开源又不挣钱,我就只能呵呵了。(本来这个文档做了个word,粘了很多图片进去,csdn的图片加载不太友好,就不贴图片了。)
在列出新特性之前,还是得先写出mysql5.7版本在安装上与5.6的不同。
一般喜欢二进制包去安装,简单方便。很容易理解。
真正的安装过程也是一波三折。
特性一:
安全性增强了,具体的增强,有以下几点:
1,5.6安装好之后root是没有密码的,现在的会随机生成一个临时密码。或者在启动的时候–skip-grant-table ,更改密码。
2,密码可以设置自动失效的时间,
5.6 user表结构
5.7 user表结构
5.7增加了Password_lifetime 这个字段,来设置密码自动失效的时间。
这个参数可以在配置文件设置,也可以动态修改。
[mysqld]
default_password_lifetime=180(180失效)
[mysqld]
default_password_lifetime=0(永不失效)
SET GLOBAL default_password_lifetime = 180;动态修改
ALTER USER ‘jeffrey’@’localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;(设置某个用户90天失效)
ALTER USER ‘jeffrey’@’localhost’ PASSWORD EXPIRE NEVER;(用户密码用不失效)
ALTER USER ‘jeffrey’@’localhost’ PASSWORD EXPIRE DEFAULT;(使此用户按照global设置)
3,用户账户锁定:
在创建用户时,可以设置用户为锁状态,比如:
,
使用如下方式解锁:
再次登录,ok
这里有一段注释:Locking an account does not affect being able to connect using a proxy user that assumes the identity
of the locked account. It also does not affect the ability to execute stored programs or views that have
a DEFINER clause naming the locked account. That is, the ability to use a proxied account or stored
programs or views is not affected by locking the account.
4, To make it easier to support secure connections, MySQL servers compiled using OpenSSL
can automatically generate missing SSL and RSA certificate and key files at startup.
5,mysql安装使用(应该是初始化)mysqld –initialize 命令,
关于安装时的一些改变如下:
只有一个root帐号,并且是有密码的
初始化时不会再创建匿名用户,也就是之前的空用户
Test库已经被默认移除
二
默认是strict模式,也就是说,比如你之前在5.6插入一个超过长度的数据,会报warning,现在就要报错了。
三 在线更改索引名称; 在之前的5.6版本是做不到的。
四
对于这个特性,不太了解。
下面比较关心的来了,innodb的增强功能。
1,可以使用alter table 功能更改varchar类型的字段长度。
增加方式为:
此处的ALGORITHM=INPLACE,只能增加字段的长度,不能减少,增加的时候不能跨越256这个值,但是两边可以增加。
2,使用DML创建innodb临时表的性能得到了提高,这个到底提高到了哪,什么程度,我也不晓得。。
DDL performance for InnoDB temporary tables is improved through optimization of CREATE
TABLE, DROP TABLE, TRUNCATE TABLE, and ALTER TABLE statements.
3,这个是说临时表不在存放在innnodb的共享表空间的意思吧。具体有什么好处呢?
,
4,innodb增加了一个空间数据类型DATA_GEOMETRY,然而我也不知道它有什么卵用
5,给临时表加了一个独立的表空间,参数为innodb_temp_data_file_path
6,checksum在功能上的加强
可检查的文件大小,在5.7.2之前只支持到2GB,现在可以大于2GB
7,5.7.2首次引进了一个新的日志,叫做non-redo undo log,它跟临时表一样,会被存放放在lbtmp1里面,此文件在data目录下。
8,新增加变量 ,关于innodb_buffer_pool增加的相关参数如下:
首先增加了两个,innodb_buffer_pool_dump_pct,innodb_buffer_pool_chunk_size
其次还有默认值不一样了,mysql5.7开始默认在数据库服务启动,停止时,预热与dump数据。
innodb_buffer_pool_dump_pct 是设置dump的百分比,这部分数据是最热的数据
innodb_buffer_pool_chunk_size
其他的变量增加:
innodb_page_cleaners,定义了dirty pages clean线程的个数
9,这
这里好像是说,增加了在线的一下ddl操作,重点是避免了copytable的操作,提供表的可用性,
10,double write技术在一下支持原子写的磁盘上失效。 Fusion-io Non-Volatile Memory (NVM) from 5.7.4
11,
这个特性是说,在5.7.4之前,只能copy非分区表到别的server,而之后,分区表也是支持的。具体以前为什么不可以,现在为什么可以了还不清楚。
12
下面这个功能是不是很酷,哈哈。
13,
触发器数量不在限制,以前,作为一个after insert的触发器,对于一张表来说,只能创建一个,现在不在限制。
14,
Ctrl+C不会退出mysql客户端
15,
复制库名重定向,我是这样叫的
16,
Change master to 的改变,
主要说了一些情况,mysql可以在不做stop slave 的操作情况下,就change master to。
更多情况请参考mysql5.7refman
17,
测试套件的默认engine变成了innodb
18,
Mysql开始支持多主复制。
上一篇: php简单实现多语言切换的方法_PHP