Mycat从入门到放弃

本文介绍了Mycat在处理非分片字段查询时可能导致的资源消耗问题,以及分页排序和有偏移量排序分页的复杂逻辑。在表JOIN操作中,若关联字段数据分布不一致,Mycat无法提供正确结果。此外,Mycat的弱XA事务可能破坏分布式事务的一致性。这些挑战在设计使用Mycat时应予以重视。
摘要由CSDN通过智能技术生成

1.非分片字段查询

Mycat中的路由结果是通过分片字段分片方法来确定的。例如下图中的一个Mycat分库方案:

  • 根据 tt_waybill 表的 id 字段来进行分片
  • 分片方法为 id 值取 3 的模,根据模值确定在DB1,DB2,DB3中的某个分片

非分片字段查询

如果查询条件中有 id 字段的情况还好,查询将会落到某个具体的分片。例如:

MySQL>select * from tt_waybill where id = 12330;

此时Mycat会计算路由结果

12330 % 3 = 0 –> DB1

并将该请求路由到DB1上去执行。 


如果查询条件中没有 分片字段 条件,例如:

mysql>select * from tt_waybill where waybill_no =88661;

此时Mycat无法计算路由,便发送到所有节点上执行:

DB1 –> select * from tt_waybill where waybill_no =88661; 
DB2 –> select * from tt_waybill where waybill_no =88661; 
DB3 –> select * from tt_waybill where waybill_no =88661;

如果该分片字段选择度高,也是业务常用的查询维度,一般只有一个或极少数个DB节点命中(返回结果集)。示例中只有3个DB节点,而实际应用中的DB节点数远超过这个,假如有50个,那么前端的一个查询,落到MySQL

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值