公司大神给的分库分表方案(仅记录一下)

160 阅读2分钟

按用户ID进行分表分库说明

userId: 字符串或数字组成

md5(userId)得到16位16的16进制字符串

md5(3123123) = c58149cbdc795d29

取开头2位(c5) 作为分为分库字段

取最后2位(29) 作为分表字段

以下是基础的分库分表

所有分库

  • 00 - 0f 对应数据库 ds00
  • 10 - 1f 对应数据库 ds10
  • 20 - 2f 对应数据库 ds20
  • 30 - 3f 对应数据库 ds30
  • 40 - 4f 对应数据库 ds40
  • 50 - 5f 对应数据库 ds50
  • 60 - 6f 对应数据库 ds60
  • 70 - 7f 对应数据库 ds70
  • 80 - 8f 对应数据库 ds80
  • 90 - 9f 对应数据库 ds90
  • a0 - af 对应数据库 dsa0
  • b0 - bf 对应数据库 dsb0
  • c0 - cf 对应数据库 dsc0
  • d0 - df 对应数据库 dsd0
  • e0 - ef 对应数据库 dse0
  • f0 - ff 对应数据库 dsf0

所有分表

  • 00 - 0f 对应数据库 tb00
  • 10 - 1f 对应数据库 tb10
  • 20 - 2f 对应数据库 tb20
  • 30 - 3f 对应数据库 tb30
  • 40 - 4f 对应数据库 tb40
  • 50 - 5f 对应数据库 tb50
  • 60 - 6f 对应数据库 tb60
  • 70 - 7f 对应数据库 tb70
  • 80 - 8f 对应数据库 tb80
  • 90 - 9f 对应数据库 tb90
  • a0 - af 对应数据库 tba0
  • b0 - bf 对应数据库 tbb0
  • c0 - cf 对应数据库 tbc0
  • d0 - df 对应数据库 tbd0
  • e0 - ef 对应数据库 tbe0
  • f0 - ff 对应数据库 tbf0

方案优点

  • 易扩展
- 00 - 0f  对应数据库 ds00 想扩展成2个库修改成
- 00 - 08  对应数据库 ds00
- 09 - 0f  对应数据库 ds08
只需要对原来00 - 0f对应的表,进行数据迁移,不影响其它数据.只需要把原来ds00库的,部分数据迁移到ds80库来