• mycat分片规则


    概念:

    1. 一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是
      分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。

    2. 拆分数据就需要定义分片规则。关系型数据库是行列的二维模型,拆分的第一原则是找到拆分维度。比如:从会员的角度来分
      析,商户订单交易类系统中查询会员某天某月某个订单,那么就需要按照会员结合日期来拆分,不同的数据按照会员ID做分组,
      这样所有的数据查询join都会在单库内解决;如果从商户的角度来讲,要查询某个商家某天所有的订单数,就需要按照商户ID做
      拆分;但是如果系统既想按会员拆分,又想按商家数据,则会有一定的困难。如何找到合适的分片规则需要综合考虑衡量。

    3. 几种典型的分片规则包括:
      按照用户ID求模,将数据分散到不同的数据库,具有相同数据用户的数据都被分散到一个库中。
      按照日期,将不同月甚至日的数据分散到不同的库中。
      按照某个特定的字段求摸,或者根据特定范围段分散到不同的库中。

    4. 分片规则重点注意事项
      由于数据切分后数据Join的难度在此也分享一下数据切分的经验:
      第一原则:能不切分尽量不要切分。
      第二原则:如果要切分一定要选择合适的切分规则,提前规划好。
      第三原则:数据切分尽量通过数据冗余或表分组(Table Group)来降低跨库Join的可能。
      第四原则:由于数据库中间件对数据Join实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表Join。

    5. 解释部分:
      (1)全局表(字典表)冗余。
      在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,所以Mycat中通过数据冗余来解决这类表的join,即所有的分片都有一份数据的拷贝,所有将字典表或者符合字典表特性的一些表定义为全局表。
      数据冗余是解决跨分片数据join的一种很好的思路,也是数据切分规划的另外一条重要规则。
      (2)表分组
      表分组(Table Group)是解决跨分片数据join的一种很好的思路,也是数据切分规划的重要一条规则。

  • 相关阅读:
    专利申请需要什么条件
    c++中的指针
    React中Immutable的使用
    Spring解决循环依赖
    加油站监控ai智能分析
    分享68个ASP.NET源码总有一个是你想要的
    1096:数字统计(信奥)
    别再只会用折线图饼图了,我找到更好用的这5种图表,95%的人不会
    痞子衡嵌入式:聊聊i.MXRT1170双核下不同GPIO组的访问以及中断设计
    前端页面访问后台hiveserver2,阶段性报错
  • 原文地址:https://blog.csdn.net/qq_38747892/article/details/126726892