Logo
数据分片

数据分片 #

配置项说明 #

rules:
- !SHARDING
  tables: # 数据分片规则配置
    <logic-table-name> (+): # 逻辑表名称
      actualDataNodes (?): # 由数据源名 + 表名组成(参考Inline语法规则)
      databaseStrategy (?): # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 分片算法名称
        complex: # 用于多分片键的复合分片场景
          shardingColumns: #分片列名称,多个列以逗号分隔
          shardingAlgorithmName: # 分片算法名称
        hint: # Hint 分片策略
          shardingAlgorithmName: # 分片算法名称
        none: # 不分片
      tableStrategy: # 分表策略,同分库策略
      keyGenerateStrategy: # 分布式序列策略
        column: # 自增列名称,缺省表示不使用自增主键生成器
        keyGeneratorName: # 分布式序列算法名称
      autoReshardingStrategy: # 自动重分片-策略
        autoReshardingMatchingAlgorithmNames: # 自动重分片-条件。可多个,任意一个满足,则触发扩容动作
        autoReshardingActionAlgorithmName: scale_sharding # 自动重分片-动作。此处为指定数量扩容
      globalIndexStrategy: # 全局索引策略
        globalIndexNames: # 全局索引表名称
          - t_order_user_id_idx
        consistencyLevel: STRONG # 主表和索引表的一致性级别,STRONG 表示强一致,WEAK 表示弱一致,默认为 STRONG 强一致
        tableAccessByIndexThreshold: 1000 # 最大回表查询行数,默认为 1000,当查询需要回主表查询且回表行数超过阈值,则直接查询主表,配置为 0 则表示关闭回表行数检查
        syncDelayMillisecondsThreshold: 1000 # 索引表和主表同步延迟时间的阈值,单位毫秒,默认为 1000,当一致性级别为 WEAK 且主表和索引表同步延迟超过阈值,则直接查询主表
  autoTables: # 自动分片表规则配置
    t_order_auto: # 逻辑表名称
      actualDataSources (?): # 数据源名称
      shardingStrategy: # 切分策略
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 自动分片算法名称
      globalIndexStrategy: # 全局索引策略
        globalIndexNames: # 全局索引表名称
          - t_order_user_id_idx
        consistencyLevel: STRONG # 主表和索引表的一致性级别,STRONG 表示强一致,WEAK 表示弱一致,默认为 STRONG 强一致
        tableAccessByIndexThreshold: 1000 # 最大回表查询行数,默认为 1000,当查询需要回主表查询且回表行数超过阈值,则直接查询主表,配置为 0 则表示关闭回表行数检查
        syncDelayMillisecondsThreshold: 1000 # 索引表和主表同步延迟时间的阈值,单位毫秒,默认为 1000,当一致性级别为 WEAK 且主表和索引表同步延迟超过阈值,则直接查询主表
  globalIndexes: # 全局索引规则配置
    <logic-table-name> (+): # 全局索引逻辑表名称
      actualDataNodes (?): # 由数据源名 + 表名组成(参考Inline语法规则)
      databaseStrategy (?): # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 分片算法名称
        complex: # 用于多分片键的复合分片场景
          shardingColumns: #分片列名称,多个列以逗号分隔
          shardingAlgorithmName: # 分片算法名称
        hint: # Hint 分片策略
          shardingAlgorithmName: # 分片算法名称
        none: # 不分片
      tableStrategy: # 分表策略,同分库策略
      coveringColumns: # 全局索引覆盖列
        - user_id
  autoGlobalIndexes: # 自动全局索引表规则配置
    t_order_auto: # 全局索引逻辑表名称
      actualDataSources (?): # 数据源名称
      shardingStrategy: # 切分策略
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 自动分片算法名称
      coveringColumns: # 全局索引覆盖列
        - user_id

  bindingTables (+): # 绑定表规则列表
    - <logic_table_name_1, logic_table_name_2, ...> 
    - <logic_table_name_1, logic_table_name_2, ...> 
  broadcastTables (+): # 广播表规则列表
    - <table-name>
    - <table-name>
  defaultDatabaseStrategy: # 默认数据库分片策略
  defaultTableStrategy: # 默认表分片策略
  defaultAutoReshardingStrategy: # 默认 自动重分片-策略
    autoReshardingMatchingAlgorithmNames: 
    autoReshardingActionAlgorithmName: scale_sharding
  defaultKeyGenerateStrategy: # 默认的分布式序列策略
  defaultShardingColumn: # 默认分片列名称
  
  # 分片算法配置
  shardingAlgorithms:
    <sharding-algorithm-name> (+): # 分片算法名称
      type: # 分片算法类型
      props: # 分片算法属性配置
      # ...
  auto_interval_daily:
    type: AUTO_INTERVAL # 自动分片-自动时间段分片算法
    props:
      datetime-lower: "2023-06-01 00:00:00" # 分片的起始时间范围,固定格式时间戳格式:yyyy-MM-dd HH:mm:ss
      datetime-upper: "2023-06-25 23:59:59"
      sharding-seconds: 86400 # 单一分片所能承载的最大时间,单位:秒
  
  # 分布式序列算法配置
  keyGenerators:
    <key-generate-algorithm-name> (+): # 分布式序列算法名称
      type: # 分布式序列算法类型
      props: # 分布式序列算法属性配置
      # ...
  # 自动重分片条件配置
  autoReshardingMatchingAlgorithms:
    interval_upper_time_HIGH_WATERLINE_condition:
      type: INTERVAL_UPPER_TIME_HIGH_WATERLINE
      props:
        remaining-seconds-until-upper-time: 691200 # 距离 upper-time 还剩多少秒时,触发重分布
  # 扩容动作配置
  autoReshardingActionAlgorithms:
    scale_sharding:
      type: SCALE_SHARDING
      props:
        operation-type: add # 操作类型。add、subtract、multiply、divide
        amount: 20 # 数量。和上面的操作类型配合,比如加2片,还是 2倍扩容