mysql下merge分表

1.merge简介分表就是把N条记录的表,分成若干个分表,各个分表记录的总和仍为N。
分表的方法有很多,用merge来分表,是最简单的一种方式.merge是mysql的一种存储引擎,它把一组MyISAM数据表当做一个逻辑单元.
CREATE TABLE`t` (`id`int(10) unsigned NOT NULL AUTO_INCREMENT, `data`varchar(45) NOT NULL, PRIMARY KEY(`id`)) ENGINE = MERGE UNION = (t1, t2) INSERT_METHOD = LAST;
其中ENGINE = MERGE表示,使用merge引擎。另外ENGINE = MRG_MyISAM是一样的意思。UNION = (t1, t2)表示,挂接了t1,
t2表INSERT_METHOD = LAST表示,插入方式。0不允许插入,FIRST插入到UNION中的第一个表,LAST插入到UNION中的最后一个表.
2.merge数据存储结构mysql中MyISAM引擎下每一张表都对应三个文件: .MYD数据文件,.MYI索引文件,.frm表结构文件.但是Merge引擎下每一张表只有一个.MRG文件.MRG里面存放着分表的关系,以及插入数据的方式。它就像是一个外壳,或者是连接池,
数据存放在分表里面.
3.CRUD对于增删改查,直接操作总表t就可以了。
4.注意事项
a.重复记录 / 重复索引若建立merge表前,分表t1 / t2已经存在,并且t1 / t2中存在重复记录。查询时,遇到满足记录的条目就会返回。意思就是只会显示一条记录,同时不会报错.若建立merge表后,insert / update时,出现重复索引,则会提示错误。MERGE表只对建表之后的操作负责
b.如何删除一个分表不能直接删除一个分表,这样会破坏merge表。正确的方法是: alter table t ENGINE = MRG_MyISAM UNION = (t1) INSERT_METHOD = LAST;
drop table t1
c.误删merge总表误删merge表,是不会造成数据丢失的,只需重新创建总表
posted @ 2016-05-03 13:35  周国伟  阅读(3696)  评论(0编辑  收藏  举报