按照范围分表指在某个字段上按照范围对数据进行拆分,例如将数据按照用户 ID 的范围 0-10w、10w-20w、20w-30w 分别划分到不同的数据库中。采用这种方法扩容简单,按照规划提前建好库和表即可,缺点是大部分读和写操作都会访问新的数据,造成新库压力过大
哈希取模
哈希取模指在某个字段上计算该字段的哈希值,按照其哈希值对数据进行拆分。哈希取模的具体做法是首先对 N 台服务器从 0 到 N-1 进行编号,按照自定义的哈希算法,对每个请求的哈希值都按 N 取模,得到的余数即该数据所在的服务器编号。采用该方法的好处是数据分布均衡,数据库的整体压力小,缺点是扩缩容麻烦,在扩缩容过程中需要对所有数据重新进行哈希分配和迁移