ShardingSphere水平分表

应用场景

该数据表用于接收各个项目组的数据信息,数据上传频率极高,数据量在一周内便达到十万加,
数据表sys_order简易结构如下:
在这里插入图片描述
由于数据量不断增加,项目数据库表数据量过大。需要使用shardingSphere根据groupId字段进行水平分表,每个项目组对应一张表,便于管理的同时减轻数据表压力。

实现步骤

引入Maven依赖

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc-core</artifactId>
    <version>${shardingsphere.version}</version>
</dependency>

配置yaml文件

spring:
  shardingsphere:
    mode:
      # 运行模式类型。可选配置:内存模式 Memory、单机模式 Standalone、集群模式 Cluster
      type: Memory
    props:
      #是否在日志中打印 SQL。
      #打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。
      #如果开启配置,日志将使用 Topic ShardingSphere-SQL,日志级别是 INFO。 false
      sql-show: true
      #是否在日志中打印简单风格的 SQL。false
      sql-simple: false
      #用于设置任务处理线程池的大小。每个 ShardingSphereDataSource 使用一个独立的线程池,同一个 JVM 的不同数据源不共享线程池。
      executor-size: 20
      #次查询请求在每个数据库实例中所能使用的最大连接数。1
      max-connections-size-per-query: 1
      #在程序启动和更新时,是否检查分片元数据的结构一致性。
      check-table-metadata-enabled: false
      #在程序启动和更新时,是否检查重复表。false
      check-duplicate-table-enabled: false
    datasource:
      names: ds0
      ds0:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/db0
        username: root
        password: root
    rules:
      sharding: #ShardingSphere-JDBC全局序列配置规则
        key-generators:
          # 雪花算法生成数据库id,不使用可以不设置
          snowflake:
            type: SNOWFLAKE
            props:
              worker-id: 123
        #分片算法配置
        sharding-algorithms:
          ## 分片算法名称
          fenpian-table-1:
            #对应 Override getType
            type: MOD # 使用取模分片算法
            props:
              sharding-count: 20 # 取模数量,暂时分20张表吧
        
        tables:
          # 逻辑表名称
          sys_order:
            # 由数据源名 + 表名组成(参考 Inline 语法规则)
            actual-data-nodes: ds0.sys_order${
    
    0..20}
            # 分表策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
            table-strategy:
              #standard: # 用于单分片键的标准分片场景
              standard:
                #数据库的键
                shardingColumn: group_id
                sharding-algorithm-name: fenpian-table-1
            # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一

关键配置说明

sharing部分是我们分表需要使用的算法,一个是生成id使用的雪花算法,一个是分表使用的取模算法
在这里插入图片描述
tables部分是对表的配置,分表是数据源使用,和分表策略使用。本次使用暂时不分库
在这里插入图片描述

后续测试

等待补充…

猜你喜欢

转载自blog.csdn.net/weixin_49363689/article/details/132249073