龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 编程语言 > MySql > Mysql后期无奈分表(一)Merge

Mysql后期无奈分表(一)Merge

龙行    MySql    2019-9-22    43    0评论    百度未收录

一:介绍:merge是Mysql最简单的一种分表,Mysql自带的一个分表功能,Merge表并不保存数据,Merge表和分表是对应映射关系。

二:优缺点:

优点:使用简单,不用修改程序代码,最多我们修改一下Merage表名就可以兼容以前程序(修改表名的时候一定要备份以前的,以防万一。)

缺点:

a:只能使用MyISAM引擎

b:很难平均分配,比如Merage设置插入条件,要么只能插入到第一个表,要么插入到最后一个表。

c:没有约束ID,比如现在是在第一个表插入,后面我改成在第二个表插入,那么ID在Merage表中就会重复,ID不唯一,就会造成很多程序异常。解决这个问题,需要统一规则,不能一会儿在前面插入,一会儿在后面插入,也不能直接在分表插入,分表插入不是不可以,如果统一了全局ID,可以在分表插入。

综合适应场景:merge分表非常适合开始没做好规划,后来数据量上来,要拆分表的情况;比如接手一个项目,上一路人马把几千万条数据弄在一个表里面,拆表很可能就要改sql,此时你心里肯定一千个草泥马,用merge分表这种方式不需要改代码即可轻松实现。

三:操作:

1:实验把一个表分成两个表,假设原表t数据量太大,现在拆开了成两个表,t1和t2;

(1):首先把t1表复制到两个表,只复制表结构,不要复制数据

create table t1 like order
create table t2 like order

这样数据多了两个表,or1和or2


(2):拆分t表数据到t1和t2,既然是拆分两个表,肯定是平均分配,这里用一个简单的方法拆分数据:

 id%2=0的数据划分到t1表, id%2=1的划分到t2表,下面复制数据,分别执行:

insert into t1 select * from `order` where id%2=0
insert into t2 select * from `order` where id%2=1


执行结果后你会看到数据均匀分到了两个表里面去


2:创建Merge表:

创建语法和创建表语法一样,只是多了几个参数:

CREATE TABLE `tall` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `sex` int(1) NOT NULL,
  KEY `id` (`id`)
ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=LAST UNION=(`t1`,`t2`);

备注:

tall:Merge表名;

INSERT_METHOD:表示插入方式;

INSERT_METHOD=LAST 添加数据的时候插入到最后一个表,这里就是t2

INSERT_METHOD=FIRST 添加数据的时候插入到第一个表,这里就是t1

INSERT_METHOD=0 不允许插入

UNION = (t1,t2) 关联t1和t2表 

Merge表 数据结构必须和分表完全一致

上面蓝色部分ENGINE必须是MRG_MyISAM或者MERGE,这两个是一个意思。

查看一下数据库:


Merage表tall已建立成功

这样对两个表的CURD操作,只需要操作Merge表就行了,这样不用改动代码


执行一下插入操作:


通过获取tall表,可以看到我们刚才插入成功了,但实际数据是在t2表,因为我们创建Merge表的时候是设置插入到最后一张表,打开看下:


注意:分表必须为MyISAM引擎,Merage表(总表)必须是MRG_MyISAM或者MERGE引擎。

原作写的很清楚,优缺点说的很到位,转载留存

本帖原文来自 http://blog.daozys.com/goods_111.html 尊重版权,从我做起

评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/307.html
  • 上篇文章:Mysql-hash取模分表
  • 下篇文章:tp5+七牛云上传
  • mysql
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
光羽影视
音乐欣赏
返回顶部