merge 存储引擎也被称为MGR_MyISAM 存储引擎,它实际上是将一组Myisam 表聚合在一起。使用时就像一张表
merge 存储引擎所有的表必须拥有相同的表结构以下为例子
create table v1 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;
create table v2 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;
create table v3 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;
create table v4 (id int not null auto_increment primary key,v1 varchar(20),v2 varchar(20)) engine=myisam;
insert into v1 (v1) values('this'),('is'),('mysql');
insert into v2 (v1) values('this'),('is'),('mysql');
insert into v3 (v1) values('this'),('is'),('mysql');
insert into v4 (v1) values('this'),('is'),('mysql');
----基于上面三张表创建merge 存储引擎表
create table v_merge(
id int not null auto_increment primary key,v1 varchar(20)) engine=merge union(v1,v2,v3);
create table t_merge(id int not null auto_increment primary key,v1 varchar(20)) engine=merge union(v1,v2,v4);
mysql> select * from v_merge;
+----+-------+
| id | v1 |
+----+-------+
| 1 | this |
| 2 | is |
| 3 | mysql |
| 1 | this |
| 2 | is |
| 3 | mysql |
| 1 | this |
| 2 | is |
| 3 | mysql |
+----+-------+
9 rows in set (0.00 sec)
mysql> select * from t_merge;
ERROR 1168 (HY000): Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
每个merge引擎除了拥有存储表结构定义的.frm 文件外 还有 一个扩展名称为.mgr的文件。
。mgr 文件不保存数据而是保存数据的来源地
mysql>alter table v_merge insert_method=firse
第二步实验 delete
另外MERGE引擎表本身也不存储数据
默认情况下merger 是不允许insert ,delete ,update 的。
但是通过设置参数(insert_method)是可以完成这些操作
mysql>alter table v_merge insert_method=firse
第二步实验 delete
在merge 表中添加表
create table v5 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;
insert into v5 (v1) values('that'),('is'),('mine');
alter table v_merge union(v1,v2,v3,v5)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26764973/viewspace-1443623/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26764973/viewspace-1443623/