该引擎使用的业务场景:
当需要跨库(跨不同的mysql实例)进行表的JOIN,相当于本地表一样去JOIN的时候可以考虑使用FEDEATED引擎,用FEDEATED引擎只需要在本地建立一张链表和订单表一样的字段只是引擎选择为FEDEATED,来指向真实的订单表,就相当与引用。后面我们会有例子来进行实际说明
业务场景: 例如你在数据统计的时候既要用到订单表又要用到仓储的表
常规做法
- 用编程语言进行JION操作
- 落地一份订单表或者仓储的表到本地然后进行SQL JOIN
- 将订单库挂一个从库在本地
注意事项
- 禁止使用链表类似,limit 10这种SQL(它会把所有的数据拉到本地内存然后在截断,大表的时候直接卡死)
- 原表新增字段无所谓,删除和修改字段名,本地链表应相应修改,不然会报错
- JOIN操作的时候超过三个链表将会比较慢
例子:
CREATE TABLE `shop`.`tb_order` (
`bill_id` bigint(20) unsigned NOT NULL COMMENT '价保单号',
`goods_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商品SKU',
`goods_num` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '数量',
`price` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '单价',
PRIMARY KEY (`bill_id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://user:password@host:port/shop/tb_order';