mysql5.7版特点_Mysql5.7版本新特征

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管理数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值