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 上:

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

 

你可能感兴趣的:(数据库中间件/Mycat)