概述
文章目录
- 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. 结果
最后
以上就是单纯蛋挞为你收集整理的六、Sharding JDBC实战-join关联查询(二)的全部内容,希望文章能够帮你解决六、Sharding JDBC实战-join关联查询(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复