2、shardingjdbc工作原理分析

一、shardingjdbc概述

shardingjdbc在当前分库分表领域占有很大市场份额。可能和其宣传有关系,其文档突出自己的优点,对自己的缺点写的很少或者很不容易被注意到。所以,我们在使用shardingjdbc做业务的时候要关注他最终生成的sql是什么?是否符合我们的业务需求。这里不是黑shardingjdbc,不是shardingjdbc的问题,这是计算机行业难以跨越的问题。

二、shardingjdbc原理

shardingjdbc文档写一堆,感觉很神秘。其实实质就是一个条件路由器和sql转移器。学习和了解shardingjdbc最好的方式就是抓包。

  • shardingjdbc是路由器:shardingjdbc其实就是一个路由器
  • shardingjdbc SQL转移器:shardingjdbc其实就是根据路由规则转义sql

三、shardingjdbc SQL转义

我们就拿一份按照季度的分库分表场景做演示吧。这里可以看出shardingjdbc取了intmax的分表记录,然后汇聚取top10.可见有多么大的网络开销。所以涉及排序的场景要做好技术测试。

2.1、原始SQL

select  station_id,count(station_id) as stationNum  from tms_delivery_order_2021   
where delivery_start_time between  '2021-01-01 01:41:36' and  '2021-12-30 01:41:36'  
group by  station_id  order by stationNum desc LIMIT 10

2.2、被转义SQL

#sql1 第一季度
select  station_id,count(station_id) as stationNum  from tms_delivery_order_2021_q1   
where delivery_start_time between  '2021-01-01 01:41:36' and  '2021-12-30 01:41:36'  
group by  station_id  order by stationNum desc LIMIT 2147483647

#sql2 第二季度
select  station_id,count(station_id) as stationNum  from tms_delivery_order_2021_q2   
where delivery_start_time between  '2021-01-01 01:41:36' and  '2021-12-30 01:41:36'  
group by  station_id  order by stationNum desc LIMIT 2147483647

#sql3 第三季度
select  station_id,count(station_id) as stationNum  from tms_delivery_order_2021_q3   
where delivery_start_time between  '2021-01-01 01:41:36' and  '2021-12-30 01:41:36'  
group by  station_id  order by stationNum desc LIMIT 2147483647

#sql1 第四季度
select  station_id,count(station_id) as stationNum  from tms_delivery_order_2021_q4   
where delivery_start_time between  '2021-01-01 01:41:36' and  '2021-12-30 01:41:36'  
group by  station_id  order by stationNum desc LIMIT 2147483647

2.3、测试过程截图

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值