Mycat实践之五:DataNode的分布问题

摘自《Mycat权威指南》

 

DataNode代表 MySQL 数据库上的一个 Database,因此一个分片表的 DataNode 的分布可能有以下几种:

  • 都在一个 DataHost 上
  • 在几个 DataHost 上,但有连续性,比如 dn1 到 dn5 在 Server1 上,dn6 到 dn10 在 Server2 上,依次类推
  • 在几个 DataHost 上,但均匀分布,比如 dn1,dn2,d3 分别在 Server1,Server2,Server3 上,dn4 到 dn5 又重复如此

一般情况下,不建议第一种,二对于范围分片来说,在大多数情况下,最后一种情况最理想,因为当一个表的数据均匀分布在几个物理机上的时候,跨分片查询或者随机查询,都是到不同的机器上去执行,并行度最高,IO 竞争也最小,因此性能最好。

当我们有几十个表都分片的情况下,怎样设计 DataNode 的分布问题,就成了一个难题,解决此难题的最好方式是试运行一段时间,统计观察每个 DataNode 上的 SQL 执行情况,看是否有严重不均匀的现象产生,然后根据统计结果,重新映射 DataNode 到 DataHost 的关系。

Mycat1.4 增加了 distribute 函数,可以用于 Table 的 dataNode 属性上,表示将这些 dataNode 在该Table 的分片规则里的引用顺序重新安排,使得他们能均匀分布到几个 DataHost 上:

<tablename="oc_call" primaryKey="ID"dataNode="distribute(dn1$0-372,dn2$0-372)"rule="latest-monthcalldate" />

其中 dn1xxx 与 dn2xxxx 是分别定义在 DataHost1 上与 DataHost2 上的 377 个分片。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值