这是以前做的笔记,前东家的数据库分库分表策略,感觉挺有借鉴价值。


假设数据库数量为10

分库分表键为某个ID:
hash = Md5(key).subString(0,4);
bucket_index = hash.subString(0,3);
table_index = hash.subString(3,4);

解释
bucket_index,取3位16进制,取值范围是0 - 4095,对应某个数据库
table_index,取1位十六进制,取值范围是0 - 15,对应哪个分表

这样做的好处
1、当数据移植的时候只要锁定1/4096的记录即可,如果想继续减少影响的数据规模,可以增加bucket_index的取值范围;
2、通过hash,数据分布均匀。

这样做的缺点
1、无法区分出冷热数据;适应不区分冷热数据的服务场景;
2、线下定位某一条记录在哪里会比较麻烦,需要自己写工具对应;不过这个倒没太大关系。

相关文章:

  • 2022-12-23
  • 2021-11-20
  • 2021-11-10
  • 2021-04-13
  • 2021-08-14
猜你喜欢
  • 2021-05-26
  • 2021-07-15
  • 2022-01-09
  • 2021-08-20
  • 2021-10-21
相关资源
相似解决方案