使用Mysql Merge存储引擎实现分表

转载 2015年07月08日 13:58:00

对于数据量很大的一张表,i/o效率底下,分表势在必行!

 

使用程序分,对不同的查询,分配到不同的子表中,是个解决方案,但要改代码,对查询不透明。

 

好在mysql 有两个解决方案:

 

Partition(分区,在MySQL 5.1.中实现) 和 Mysql Merge存储引擎。

 

本文讨论 Mysql Merge存储引擎。

 

 CREATE TABLE t1 (  a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  message CHAR(20));
 CREATE TABLE t2 (  a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  message CHAR(20));


INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');

 INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');

 CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20)) ENGINE=MERGE  UNION=(t1,t2) INSERT_METHOD=LAST;

 

对应定期分表的情况下,只要定期相应的增加一个基础表,再修改merge表中的 union 就行了(ALTER TABLE tbl_name  UNION=(...))。

 

如在增加一个表(需和其他基础表一样的结构):

 CREATE TABLE t3(  a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  message CHAR(20));

ALTER TABLE total  UNION=(t1,t2,t3)

 

INSERT_METHOD=LAST;表示插入的方法,INSERT_METHOD的值可以是 FIRST(插入第一个表),LAST(最后一个表),NO(不能插入)

 

查询的时候,和平常一样

 

select * from total where ....

 

merge表会自动找到相应的基础表进行查询。

 

需要注意的是 merge表并不维护 “唯一性”检查,唯一性有各基础表完成。所以插入新的记录时候可能和其他基础表的内容重复。所以再插入去需要用代码进行唯一性检查。

 

详情参考:

http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html

相关文章推荐

mysql 分表,分区,分库相关及merge引擎

为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性...

mysql使用MRG_MyISAM(MERGE)实现水平分表

来源:http://m.oschina.net/blog/382658 在MySql中数据的优化尤其是大数据量的优化是一门很大的学问,当然其它数据库也是如此,即使你不是DBA,做为一名程序员...

MySQL中merge表存储引擎用法

在Mysql数据库中,Merge表有点类似于视图。mysql的merge引擎类型允许你把许多结构相同的表合并为一个表。之后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表...

MySQL MERGE存储引擎 简介

MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构。每一个成员数据表的数据列必...

使用Merge存储引擎实现 mysql分表

分表就是把N条记录的表,分成若干个分表,各个分表记录的总和仍为N。   分表的方法有很多,用merge来分表,是最简单的一种方式. Merge表的优点: A: 分离静态的和动态的数据 B:...

MySQL Merge存储引擎

MySQL Merge存储引擎

Mysql的存储引擎之:MERGE存储引擎

Merge是基于MyISAM存储引擎的表,所以Merge存储引擎也叫做MGR_MyISAM存储引擎,作用是将一组MyISAM存储引擎的表聚合成一张表。   Merge中要聚合的MyISAM表的列和索引...

Mysql分表查询引擎Merge技术总结

首先说一下Merge这个关键字在Oracle中是怎么运用的

MySQL中的各种引擎

MySQL中的各种引擎

Mysql MERGE分表对大数据量的处理

对于大数据量的处理,始终也是没接触过,这几天数据库接近2000万,有要蹦的危险,在网上找了几种方法,但是感觉最实质性的问题是用分表的方法解决数据库瓶颈问题, 网上有为网友说他6G的数据单靠所以就能解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Mysql Merge存储引擎实现分表
举报原因:
原因补充:

(最多只允许输入30个字)