为什么分表都是2的N次方

mysql分表

在使用mysql的过程中,经常需要分表,比如按照uid。
分表分成2的N次方有两个好处:

  • 可以使用位运算找到对应分表
    比如uid=80001,分成32,按照取模80001%32等于1,如果用位运算则80001 & 31还是等于1,并且位运算比较快。
  • 第二是对于以后如果需要增加表的影响
    如果是2的N次方,影响的范围会比较小,比如最初是32张,uid=80001在第一张表中,增加到64张,则80001%64还是在第一张表;如果增加到33张,则80001%33等于9,数据需要做迁移了。