ITPub博客

首页 > 数据库 > MySQL > MERGE 存储引擎

MERGE 存储引擎

原创 MySQL 作者:huzhichengforce 时间:2015-02-28 12:46:43 0 删除 编辑
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 文件不保存数据而是保存数据的来源地

另外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博客 ” ,链接:https://blog.itpub.net/26764973/viewspace-1443623/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-08-19

  • 博文量
    202
  • 访问量
    518269