zoukankan      html  css  js  c++  java
  • 一种分库分表的方法:哈希分库分表

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


    假设数据库数量为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、线下定位某一条记录在哪里会比较麻烦,需要自己写工具对应;不过这个倒没太大关系。

  • 相关阅读:
    2019hdu多校1
    codefroce842C
    [codeforce686D]树的重心
    [codeforce1188C&D]
    Educational Codeforces Round 66
    [hdu4343]interval query
    Luogu 4234 最小差值生成树
    BZOJ 2594 水管局长
    Luogu 2173 [ZJOI2012]网络
    Luogu 2147 洞穴勘测
  • 原文地址:https://www.cnblogs.com/liushijie/p/5481253.html
Copyright © 2011-2022 走看看