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引擎实现的分表在实际应用中并不多


相关内容

热门资讯

以卵击石的“汉光演习”不过是一... 昨天题为《人民解放军越强大,台海和平越有保障》的海风文章,已经反映了一部分台海局势的现实。若再把8月...
美国一养老社区将推出面向老人的... 据《独立报》8月1日报道,美国亚利桑那州一养老社区将引入一台专为老年人设计的大麻自助售卖机,居民无需...
“你头发都白了”,同守广西边防... “你头发都白了,模样还是没变,就是没有年轻时候那么帅了。”
小米手机再度涨价:旗舰最高上涨... 8月2日,小米商城价格更新,多款主力机型上调300元至500元不等。其中,REDMI Turbo 5...
“真实社交”售卖“优先访问权”... 据了解,购买这项服务的企业能够直接接入“真实社交”数据源,辅以人工智能技术解读信息,进而提前把握市场...
原创 狂... 英伟达正式官宣与 Safe Superintelligence(SSI)达成长期战略合作,总投资规模...
马斯克最新预言来了,钱要没用了... “以法莲是商人,手里有诡诈的天平,爱行欺骗!”——圣经 据红星新闻报道,本月,埃隆·马斯克在接受专...
遭欧盟22国“围攻”,西班牙怒... 西班牙首相桑切斯与22个欧盟成员国领导人激烈交锋后,由轮值主席国爱尔兰正式召集,欧盟将于本周二(8月...
创维电视42d9指示灯不亮 1、可能为电源插座插头的故障。2、可能为电源连接线的故障。3、可能为电视内部开关电源电路出了故障。4...
电视不通电指示灯不亮是什么原因 因为电源适配器发生了故障,就会导致电视不通电指示灯不亮;当然了,电视机也会因为开机的电源电路发生异常...