MySQL Merge引擎实现分表
admin
2023-05-17 08:22:13
0

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

创建子表user1

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

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

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进行插入数据

MySQL Merge引擎实现分表MySQL Merge引擎实现分表

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

MySQL Merge引擎实现分表

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

MySQL Merge引擎实现分表

MySQL Merge引擎实现分表

MySQL Merge引擎实现分表

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

MySQL Merge引擎实现分表

MySQL Merge引擎实现分表

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


相关内容

热门资讯

《十诫》《蓝白红》编剧皮耶谢维... 澎湃新闻记者 程晓筠据多家波兰媒体报道,该国知名编剧克日什托夫·皮耶谢维奇(Krzysztof Pi...
记者卧底“濮阳到桂林六日游”低... 极目新闻记者 郭奕今年3月,极目新闻记者卧底从河南濮阳市出发的199元桂林六日游旅行团发现,参团人员...
惊人策划透出,“下一个是古巴”... 古巴局势正面临严重升级。据三位知情人士周五向美联社透露,美国司法部正准备对现年94岁的古巴前领导人劳...
人间烟火暖 家和岁月安——记2... 新华社北京5月15日电 题:人间烟火暖 家和岁月安——记2026年“最美家庭”新华社记者董博婷家是最...
公交侧翻致2名学生去世,知情人... 极目新闻记者 柳琛琛5月16日晚,左权县安委办通报,16日7时17分,左权县石暴村附近发生一起公交车...
瞭望·治国理政纪事|进一步夯实... ◇2025年5月,习近平总书记在河南考察时指出,河南作为经济大省,要进一步夯实实体经济这个根基,以科...
特朗普:不希望看到台湾有人闹“... 据凤凰卫视报道,美国总统特朗普5月15日结束访华行程后,在接受福克斯新闻采访时谈到台湾问题,他表示不...
美军下一代空空导弹AIM-26... 【文/观察者网 山猫】据专业航空新闻网站“航空学家”(The Aviationist)5月15日报道...
燃气热水器多少升代表什么意思 燃气热水器的升数指的就是其每分钟的热水流量,这个流量等于(△T25℃×X流量)÷Y设定温度。可以简单...