我是靠谱客的博主 单纯蛋挞,最近开发中收集的这篇文章主要介绍六、Sharding JDBC实战-join关联查询(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

        • 1. 说明
        • 2. yml配置
        • 3. SQL
        • 4. 绑定表
        • 5. 结果

1. 说明

前面篇章学习了join,下面篇章学习绑定表。
join逻辑表关联查询需要分别和真实表关联查询的,有一定性能损失。但一些实战场景,我们可以进行join优化。
首先,建逻辑表product_info商品详情表。

2. yml配置

spring:
#Sharding-JDBC的配置
shardingsphere:
datasource:
#数据源名称,多个用逗号分开
names: ds1,ds2
ds1:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.0.1:3306/ds1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
ds2:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.0.1:3306/ds2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
#分片的配置
sharding:
#表的分片策略
tables:
product:
actual-data-nodes: ds$->{1..2}.product_$->{1..2}
database‐strategy:
inline:
sharding‐column: shop_id
algorithm‐expression: ds$->{shop_id%2+1}
table‐strategy:
inline:
##分片键
sharding‐column: id
##分片算法,内置的精确算法
algorithm‐expression: product_$->{id%2+1}
#主键生成策略
key-generator:
#主键
column: id
#生成算法
type: SNOWFLAKE
product_info:
actual-data-nodes: ds$->{1..2}.product_info_$->{1..2}
database‐strategy:
inline:
sharding‐column: shop_id
algorithm‐expression: ds$->{shop_id%2+1}
table‐strategy:
inline:
##分片键
sharding‐column: id
##分片算法,内置的精确算法
algorithm‐expression: product_info_$->{id%2+1}
#主键生成策略
key-generator:
#主键
column: id
#生成算法
type: SNOWFLAKE
shop:
database‐strategy:
inline:
##分片键
sharding‐column: id
##分片算法,内置的精确算法
algorithm‐expression: ds$->{id%2+1}
#主键生成策略
key-generator:
#主键
column: id
#生成算法
type: SNOWFLAKE
props:
sql:
show: true

3. SQL

select p.*,i.info from product p
left join product_info i on p.id = i.id

执行结果:
在这里插入图片描述
结果也会有null的列,并且性能消耗大,ds2数据库执行了4次关联查询。如下图:
在这里插入图片描述
优化后:
在这里插入图片描述

4. 绑定表

绑定表:分片规则一致的主表和子表

绑定表这里需要满足的条件:
1. 分片键相同
2. 分片规则一致

增加配置如下:

spring
shardingsphere:
sharding:
binding-tables:
## 可以配置多个,用集合的方式
- product,product_info

5. 结果

执行了4次

最后

以上就是单纯蛋挞为你收集整理的六、Sharding JDBC实战-join关联查询(二)的全部内容,希望文章能够帮你解决六、Sharding JDBC实战-join关联查询(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部