mysql使用MRG_MyISAM存储引擎实现水平分表

MRG_MyISAM:
引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列和索引信息.
你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表.而且,任何或者所有的表可以用myisampack来压缩.


案例:
mysql> create table test1 (id int not null auto_increment,name varchar(10) default null ,primary key (id)) engine=myisam auto_increment=1;            
Query OK, 0 rows affected (0.01 sec)


mysql> create table test2 (id int not null auto_increment,name varchar(10) default null ,primary key (id)) engine=myisam auto_increment=1; 
Query OK, 0 rows affected (0.00 sec)


mysql> INSERT INTO `test1` (`name`) VALUES('beijing1');   
Query OK, 1 row affected (0.00 sec)


mysql> INSERT INTO `test2` (`name`) VALUES('beijing2'); 
Query OK, 1 row affected (0.00 sec)


mysql> create table test (id int not null auto_increment,name varchar(10) default null ,index(id)) engine=mrg_myisam union=(test1,test2) insert_method=last auto_increment=1;
Query OK, 0 rows affected (0.03 sec)


mysql> select id,name from test;  
+----+----------+
| id | name     |
+----+----------+
|  1 | beijing1 |
|  1 | beijing2 |
+----+----------+
2 rows in set (0.00 sec)


mysql> INSERT INTO `test` (`name`) VALUES('beijing3');   
Query OK, 1 row affected (0.00 sec)


mysql> select id,name from test;                      
+----+----------+
| id | name     |
+----+----------+
|  1 | beijing1 |
|  1 | beijing2 |
|  2 | beijing3 |
+----+----------+
3 rows in set (0.00 sec)


mysql> select id, name from test2;
+----+----------+
| id | name     |
+----+----------+
|  1 | beijing2 |
|  2 | beijing3 |
+----+----------+
2 rows in set (0.00 sec)


参数说明:
UNION:它说明你要把哪些表当作一个表来用.
INSERT_METHOD:此参数INSERT_METHOD = NO 表示该表不能做任何写入操作只作为查询使用,INSERT_METHOD = LAST表示插入到最后的一张表里面.


新增一个表:
mysql> create table test3 (id int not null auto_increment,name varchar(10) default null ,primary key (id)) engine=myisam auto_increment=1; 
Query OK, 0 rows affected (0.02 sec)


mysql> alter table test engine=mrg_myisam union=(test1,test2,test3 ) insert_method=last;


优缺点:
(1)对于日志类应用的表.比如,你可以把每月的数据放进分离的表中,用myisampack压缩这些表,创建一个MERGE表来把它们当作一个表来使用非常方便快捷.
(2)在查询速度上应该更优,对于一些表可以分割大的只读表,放进不同磁盘上的单个表中.基于这个建立一个MERGE表会比单纯一个大表速度应该会快不少.
(3)超过操作系统的文件尺寸限制,每个MyISAM表都受制于这个限制,但是MRG_MYSIAM则不会.
缺点:
MRG_MYISAM不支持全文索引还有其它一些MyISAM功能,当然可以在底表创建,但是仍然不能利用全文索引在MRG表上搜索.建立全文会报如下错误
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值