mycat 分表子查询_mycat-分库分表

核心文件:

server.xml

schema.xml

rule.xml

垂直拆分

(1)将一个库中数据表拆分到对应的库中,完成垂直拆分

比如原始项目库中包含用户、订单、商品模块的数据表,现在按照模块分别建立数据库,将数据库中

数据表拆分到对应数据库中,完成垂直拆分(微服务模式就已经做了垂直拆分)

(2)将一张有多个字段的表按照字段使用频率来拆分成多张表,完成垂直拆分

水平拆分

(1)将原始库进行复制多份(库表都是一样的),然后将数据按规则向这多个库进行存储,来达到水平拆分

比如原始库需要存储1000w条数据,将库复制5份,那么每个库将分别存储200w数据,这样原始库就不会存储数据量将大大减轻

分片      根据分区规则字段进行分片存储,那么如果根据分区规则字段查询时,也会根据分区规则路由到对应的分片上

全局表

分析:在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题

采用全局表来解决该问题,它具有以下特性:

• 全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性

• 全局表的查询操作,只从一个节点获取

• 全局表可以跟任何一个表进行 JOIN 操作

全局表配置比较简单,不用写 Rule 规则,修改schema.xml,如下配置即可:

联表操作

分析:如果主表的数据在1分片,从表对应的数据在2分片,那么这一次联表查询就需要跨节点,性能严重损耗

采用配置子表来解决该问题,修改schema.xml,如下配置即可:

mycat将tab_orders的user_id和tab_user的id关联起来,在对orders表进行插入操作时,将会判断插入数据的user_id处于哪一个分片, 然后将数据插入该分片,这样便实现了将关联数据存放在一个分片的目的。当然,如果关联了更多的表,就继续在childTable下面配置childTable

注意:使用mycat后,不能再使用数据库主键自增了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值