MySQL Merge引擎实现分表

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

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
目录
相关文章
|
3月前
|
关系型数据库 MySQL 中间件
|
1月前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
37 0
|
3天前
|
存储 关系型数据库 MySQL
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
|
10天前
|
存储 关系型数据库 MySQL
【MySQL系列笔记】InnoDB引擎-数据存储结构
InnoDB 存储引擎是MySQL的默认存储引擎,是事务安全的MySQL存储引擎。该存储引擎是第一个完整ACID事务的MySQL存储引擎,其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地利用以及使用内存和 CPU。因此很有必要学习下InnoDB存储引擎,它的很多架构设计思路都可以应用到我们的应用系统设计中。
159 4
|
12天前
|
存储 关系型数据库 MySQL
Mysql 分库分区分表
Mysql 分库分区分表
|
17天前
|
SQL 关系型数据库 MySQL
|
17天前
|
存储 缓存 关系型数据库
|
22天前
|
存储 关系型数据库 MySQL
MySQL的MyISAM引擎:技术特点与应用场景
【4月更文挑战第20天】MySQL的MyISAM引擎特点是表级锁定,适合读多写少的场景,不支持事务但提供全文索引,适用于只读应用、全文搜索和简单备份恢复。在选择存储引擎时,应根据具体需求权衡。
37 11
|
22天前
|
存储 缓存 关系型数据库
MySQL的InnoDB引擎:深度解析与应用
【4月更文挑战第20天】本文深入探讨MySQL的InnoDB引擎,它采用MVCC和行级锁定实现高并发、高性能数据操作。InnoDB通过缓冲池减少I/O,支持ACID事务、外键约束和行级锁定,提供数据一致性。此外,还支持全文索引和灵活的索引策略。其高并发性能、数据一致性和可扩展性使其成为首选存储引擎。
41 12
|
4月前
|
存储 关系型数据库 MySQL
十八、MySQL数据库引擎
十八、MySQL数据库引擎
48 0