文档章节

Merge存储引擎

s
 sunsyu
发布于 2017/04/13 16:05
字数 487
阅读 12
收藏 0

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

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

好在mysql 有两个解决方案:

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

本文讨论 Mysql Merge存储引擎。

DROP TABLE IF EXISTS merge_t1;
CREATE TABLE merge_t1 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR (20) ) ENGINE = MyISAM;

DROP TABLE IF EXISTS merge_t2;
CREATE TABLE merge_t2 ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR (20) ) ENGINE = MyISAM;

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

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

DROP TABLE IF EXISTS total;
CREATE TABLE total ( i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR (20) ) ENGINE = MERGE UNION = (merge_t1, merge_t2) INSERT_METHOD = LAST;

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

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

CREATE TABLE merge_t3 LIKE merge_t1;  

ALTER TABLE total UNION = (merge_t1, merge_t2, merge_t3);

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

查询的时候,和平常一样

select * from total where ....

merge表会自动找到相应的基础表进行查询,即对于merge表的增删改查,最终都会作用于底层的MyISAM表。

例如对于上面的表,现在执行如下语句

INSERT INTO total(message) VALUES ('Testing'),('table'),('t3');
SELECT * FROM total;

执行结果如下:
这里写图片描述

可以看到对于total的插入语句最终反映到了merge_t3 中,并且merge_t3 中的主键编号并不是从1开始的。

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

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

© 著作权归作者所有

s
粉丝 0
博文 109
码字总数 135924
作品 0
深圳
私信 提问
【学习记录】MySQL存储引擎

原文见:http://www.jb51.net/article/55849.htm MySQL存储引擎 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单...

JSAL
2016/06/02
37
0
mysql多种存储引擎

MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: - MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 - MySQ...

人情世故
2016/05/22
79
0
六、MySQL的存储引擎 - 系统的撸一遍MySQL

MySQL支持多种不同的存储引擎,并且可以通过插件的方式进行安装、包括MySQL官方提供和一些第三方公司的存储引擎,本文会介绍几种常见的存储引擎,介绍每种的特点等。 查看默认的存储引擎 查看...

logbird
2016/08/20
57
0
如何选择合适的MySQL存储引擎

MySQL有多种存储引擎: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL...

黄平俊
2009/05/07
275
0
MariaDB 10.1.9 发布,MySQL 分支

MariaDB 10.1.9 版本发布,更新信息如下: Revision #370a2cb2015-11-20 19:49:16 -0500 Fix syntax error in wsrep_sst_common.sh Revision #2fc3dc32015-11-20 09:31:13 +0100 Merge bran......

淡漠悠然
2015/11/24
2.9K
4

没有更多内容

加载失败,请刷新页面

加载更多

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
4
0
程序性能checklist

程序性能checklist

Moks角木
昨天
6
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
5
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
6
0
float浮动

float浮动 float浮动概念及原理: 文档流:文档流是文档中可显示对象在排列时所占用的位置。 加浮动的元素,会脱离文档流,会沿父容器靠左或靠右排列,如果之前已经有浮动的元素,会挨着浮动...

studywin
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部