Mysql5.7版本新特征
2016-06-15 19:27
513 查看
Mysql5.7版本新特征
初始化方式变更
5.7版本之前
scripts/mysql_install_db \ --datadir=/data/sql_data \ --user=mysql --basedir=/home/mysql
5.7版本之后
bin/mysqld --initialize --user=mysql \ --basedir=/home/mysql \ --datadir=/home/mysql/data
支持为表增加计算列
mysql5.7之前需要使用触发器实现相关功能触发器
--要实现的功能:c3=c1+c2 mysql> CREATE TABLE `test` (id int auto_increment not null, c1 int, c2 int, c3 int, primary key(id)); --创建插入触发器 mysql> create trigger inst_t before insert on test for each row set new.c3=new.c1+new.c2; mysql> insert into test(c1,c2) values(12,13); mysql> select * from test; --当使用sql更新c1或者c2,c3的数值不能更新,有缺陷 --创建update触发器 mysql> create trigger upd_t before update on test for each row set new.c3=new.c1+new.c2; mysql> update test set c1=4 where id=1;
视图解决
create view vm_t as select id,c1,c2,c1+c2 as c3 from test; select * from vm_t;
使用视图和触发器对查询效率有一定的影响,生产环境下尽量少的使用视图和触发器
5.7版本
mysql> drop table test; mysql> create table test( id int auto_increment not null, c1 int, c2 int, c3 int as(c1+c2), primary key(id) ); mysql> show create table test;
有虚拟列,不存储在磁盘中
引入JSON列类型及相关函数
5.7版本之前只能在varchar或是text等字符类型的列中存储json类型的字符串,并通过程序解析使用json字符串
5.7版本之后
增加了json列类型及以json_开头的相关处理函数,如json_type(),json_object(),json_merge()等
--json数组 select json_array('a','b',now()); ["a", "b", "2016-06-15 18:05:43.000000"] --[]括起的数组 --json对象 select json_object('key1',1,'key2',2); {"key1": 1, "key2": 2} --{}括起的对象 --创建列名col_name,数据类型为json的表 create table test(col_name,json);
Replication相关增强
多源复制
channel的解决方案基于表的多线程复制
5.7版本之前在mysql5.6开始支持多线程复制,只不过是对于每一个库一个复制线程
5.7版本之后
增加了slave_parallel_type参数可以控制并发同步是基于database还是logic_clock
在线变更复制方式
5.7版本之前要把基于日志点的复制方式变为基于gtid的复制方式或者是把基于gtid的复制方式变为基于日志点的复制方式必须要重启master服务器
简单来说,必须要有一个维护时间
5.7版本之后
允许在线变更,不用重启
SET @@GLOBAL.ENFORGE_GTID_CONSISTENCY=WARN; --执行完这一步后要保证在所有服务器都没有警告发生; SET @@GLOBAL.ENFORGE_GTID_CONSISTENCY=ON; SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE; SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE; SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT'; SET @@GLOBAL.GTID_MODE=ON; --my.cnf gtid-mode=ON STOP SLACE[FOR CHANNEL 'channel']; CHANNEL MASTER TO MASTER_AUTO_POSITION=1 [FOR CHANNEL 'channel']; START SLAVE[FOR CHANNEL 'channel'];
InnoDB引擎增强
支持缓冲池大小在线变更
5.7版本之前修改my.cnf文件,重启数据库服务器
5.7版本之后
innodb_buffer_pool_size参数变为动态参数,可以在线调整缓冲池大小
缓冲池的大小128M*的n倍
show variables like 'innodb_buffer%';
缓冲池的导入导出功能
参数控制innodb_buffer_pool_dump_pct innodb_buffer_pool_dump_now innodb_buffer_pool_dump_at_shutdown innodb_buffer_pool_load_at_startup innodb_buffer_pool_load_now
避免数据库温机造成的影响
支持为innodb建立表空间
5.7版本之前具有系统表空间及可以为每个表建立一个独立的表空间
5.7版本之后
支持CREATE TABLESPACE语法为一个表或多个表建立共用的表空间
安全和管理方面的加强
不再支持old_password认证增加帐号默认过期时间及加强了对帐号的管理功能
对帐号的管理功能
help create user;
增加sys管理数据库
相关文章推荐
- mysql 单表基础查询
- mysql优化笔记
- windows下,将MySQL做成服务/脚本启动
- MYSQL循环插入
- MySQL数据同步(一主多从)
- mysql 引擎 学习1
- mysql修改表的存储引擎
- MySQL在从库过滤错误
- Mysql常用命令详解
- [mysql] timestamp自动更新和初始化
- 解决mysql 远程链接问题
- mysql 超级管理员
- MySQL下载安装、配置与使用(x64)
- 关系型数据库之Mysql备份(五)
- Mysql无法创建外键的原因
- mysql_use_result和mysql_store_result
- MySQL递归查询所有子节点,树形结构查询
- mysql大杂烩
- 使用MyBatis链接MySQL
- mysql服务无法启动