• Home
  • Articles
    • 日志
    • 妍小言
    • 舒小书
    • 浩然说
    • 生活日记
  • All Tags

数据库分表

04 Nov 2016

Reading time ~1 minute

散列分表

  • 对业务字段散列后取模并映射到对应的表

问题:

  • 不利于新增扩展表,需要修改散列函数并对全量数据重新分配

改进,在数据和表直接引入虚拟桶概念

  1. 定义一个容量较大的散列表
  2. 根据自定义规则随机分配散列桶(虚拟桶)
  3. 定义一个虚拟桶——》数据库表的映射关系
  4. 数据根据散列函数被分配到不同的虚拟桶中,数据和散列桶的对应规则是N:1
  5. 散列桶中的数据根据内存映射关系最终落到数据库表中,散列桶和数据库表的对应规则是N:1

使用方式

  • 数据存储增加一列,用来记录该条记录对应的虚拟桶槽位
  • 增加节点时,无需更改散列算法,仅需更改虚拟桶与数据库表影射关系
    • 例子: 0 - 9 映射表A 改为 0-4映射表A 4-9映射表B
  • 增加节点后,对原A表中槽位位5-9的数据迁移至表B


mydqlDB分表