按用户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库来