聊聊 Sharding-JDBC 分库分表(五)

love374
发布于 2022-7-12 17:07
浏览
0收藏

 

数据库中的数据如下:

聊聊 Sharding-JDBC 分库分表(五)-鸿蒙开发者社区

 product_db1

聊聊 Sharding-JDBC 分库分表(五)-鸿蒙开发者社区
 product_db2

“源码已经上传GitHub,关注公众号:码猿技术专栏,回复关键词:9532 获取!”

 

4. 水平分表
经过水平分库后,性能得到了提升,但是经过一段时间后,商品的单表数据量急剧增长,查询非常慢,那么此时就需要对单表进行水平拆分了,如下图:

聊聊 Sharding-JDBC 分库分表(五)-鸿蒙开发者社区

 水平分表

同样需要在Sharding-JDBC中配置分表的规则,如下:

#分表策略,如何将一个逻辑表映射为多个实际表 
spring.shardingsphere.sharding.tables.<逻辑表名称>.table‐strategy.<分片策略>.<分片策略属性名>=

实际的配置如下:

spring:
  # Sharding-JDBC的配置
  shardingsphere:
    # 分片的配置
    sharding:
      # 表的分片策略
      tables:
        product_base:
          # 数据节点配置,采用Groovy表达式,分库分表策略,这样是4个节点,ds1.product_base_$_1/ds1.product_base_$_2/ds2.product_base_$_1/ds2.product_base_$_2
          actual-data-nodes: ds$->{1..2}.product_base_$->{1..2}
          # 分表策略
          table‐strategy:
            inline:
              # 分片键为店铺ID
              sharding‐column: shop_id
              # 分片策略取模
              algorithm‐expression: product_base_$->{shop_id%2+1}
        product_description:
          # 数据节点配置,采用Groovy表达式
          actual-data-nodes: ds$->{1..2}.product_description_$->{1..2}
          table‐strategy:
            inline:
              sharding‐column: shop_id
              algorithm‐expression: product_description_$->{shop_id%2+1}

这里需要注意的是:由于这里用了分库分表,那么数据节点一定要配置对,比如 ds$->{1..2}.product_base_$->{1..2} 这里的表达式分别对应的是4个数据节点,如下:

  • ds1.product_base_1
  • ds1.product_base_2
  • ds2.product_base_1
  • ds2.product_base_2
    “由于篇幅有限,完整的配置看源码”

单元测试如下:

@Test
public void test4(){
 for (int i = 0; i < 10; i++) {
  Product product = Product.builder()
   .name("Spring Cloud Alibaba实战课程")
   .price(159L)
   .originAddress("码猿技术专栏")
   .shopId((long)(new Random().nextInt(100)+1))
   .build();
   productMapper.insertProductBase(product);
   productMapper.insertProductDescribe(product.getProductId(),"内容",product.getShopId());
        }
    }

“源码已经上传GitHub,关注公众号:码猿技术专栏,回复关键词:9532 获取!”


总结
本篇文章主要介绍了Sharding-JDBC 分库分表实战基础内容,通过详细的案例和代码演示希望能帮助大家更好的理解。

 

文章转自公众号:码猿技术专栏

标签
已于2022-7-12 17:07:32修改
收藏
回复
举报
回复
    相关推荐