MySQL Merge引擎实现分表

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

Merge引擎是一组MyISAM表的组合,组合的分表结构必须完全相同,Merge表本身没有数据,对Merge表的操作实际上都是对子表的操作,只是对APP来说是透明的,在插入的时候默认是插入到最后一张表上,也可以指定插入到第一张表上,Merger表实际上只是多个子表的一个外壳,对它进行删除,不影响实际存储的数据。

创建子表user1

1
2
3
4
5
CREATE  TABLE  `user1` (
   `id`  int (11)  NOT  NULL  AUTO_INCREMENT,
   ` name varchar (100)  CHARACTER  SET  latin1  DEFAULT  NULL ,
   PRIMARY  KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2  DEFAULT  CHARSET=utf8;

创建子表user2

1
2
3
4
5
CREATE  TABLE  `user2` (
   `id`  int (11)  NOT  NULL  AUTO_INCREMENT,
   ` name varchar (100)  CHARACTER  SET  latin1  DEFAULT  NULL ,
   PRIMARY  KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2  DEFAULT  CHARSET=utf8;

创建Merge表alluser

1
2
3
4
5
CREATE  TABLE  `alluser` (
   `id`  int (11)  NOT  NULL ,
   ` name varchar (100)  DEFAULT  NULL ,
   PRIMARY  KEY  (`id`)
) ENGINE=MRG_MyISAM  DEFAULT  CHARSET=latin1 INSERT_METHOD= LAST  UNION =(`user1`,`user2`);

现在对alluser进行插入数据

wKioL1ltxI2BDSe_AAAo8oVwel0381.jpg-wh_50wKioL1ltxG6gpCvDAAAo8oVwel0713.jpg-wh_50

然后查看user2表的数据发现已经插入进去

wKiom1ltxL3wjeqCAAAnas7bGzk683.jpg-wh_50

下一步对子表分表进行插入操作,然后查看alluser表

wKiom1ltxOvw6cVNAAAm-8NsFSk725.jpg-wh_50

wKioL1ltxOyDVwqAAAApa1C6Bqc649.jpg-wh_50

wKioL1ltxP6ifVGIAAAyKb1XDmg147.jpg-wh_50

发现对子表的插入操作最后都会映射到alluser表中,从一定意义上实现了分表,但是也有局限性,就是数据分布不均匀,因为插入的时候不能自定义规则,只能插入创建时指定的子表,还有就没有约束条件的检查,例如在三张表中都设定id为主键,我们在user2中插入一条user1中已经存在的数据,但是alluser表并不报错且成功插入

wKioL1ltxmjRkKTdAAA1PM6kZDc831.jpg-wh_50

wKiom1ltxmihAGnYAAA0QRULkuU941.jpg-wh_50

由于这些原因,Merge引擎实现的分表在实际应用中并不多










本文转自 无心低语 51CTO博客,原文链接:http://blog.51cto.com/fengzhankui/1948637,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL 中间件
|
7月前
|
存储 SQL 关系型数据库
MySQL数据引擎、建库及账号管理
MySQL是一个开源的关系型数据库管理系统,其名称源自于创始人的女儿名字"My"和"SQL"(结构化查询语言)的缩写。作为最流行的开源数据库之一,MySQL被广泛使用在各种应用和网站开发中。它具有,支持多种操作系统,并且提供了丰富的功能和灵活的配置选项。MySQL提供了强大的数据管理功能,包括创建、修改和删除数据库、数据表和索引,以及实现数据的操作。它支持多种数据类型,如整数、字符、日期和时间等,并提供了丰富的内置函数和操作符,方便进行数据处理和计算。
|
7天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
21 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库引擎及账号管理
MySQL数据库引擎及账号管理
18 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?
MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?
|
4月前
|
存储 关系型数据库 MySQL
Mysql数据库引擎
Mysql数据库引擎
42 0
|
4月前
|
存储 安全 关系型数据库
mysql账号管理建库以及常用引擎
mysql账号管理建库以及常用引擎
36 0
|
4月前
|
存储 关系型数据库 MySQL
RDS的引擎是innodb吗?
RDS的引擎是innodb吗?
49 1
|
4月前
|
关系型数据库 数据库 RDS
RDS的引擎是innodb吗?
RDS的引擎是innodb吗?
22 0
|
5月前
|
存储 安全 关系型数据库
MySQL储存引擎那些你不一定知道的东西
MySQL储存引擎那些你不一定知道的东西
27 0
MySQL储存引擎那些你不一定知道的东西