ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> 新石器时代的特征 Mysql57版本新特征

新石器时代的特征 Mysql57版本新特征(1/2)

来源:网络整理     时间:2016-06-15     关键词:新石器时代的特征

本篇文章主要介绍了"新石器时代的特征 Mysql57版本新特征",主要涉及到新石器时代的特征方面的内容,对于MySql感兴趣的同学可以参考一下: Mysql5.7版本新特征初始化方式变更5.7版本之前scripts/mysql_install_db \--datadir=/data/sql_data \-...

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

在线变更复制方式

新石器时代的特征相关图片

新石器时代的特征相关文章