首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「ShardingSphere」SQL 路由引擎

数据分片的核心由SQL解析 => 执行器优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并的流程组成。

一、路由

分布式数据库采用了分库分表的技术,将庞大的数据按不同的规则进行拆分,存储到不同的分库、分表之中。

当用户想要对数据进行筛选查询的时候,那必须根据分库分表的规则去不同的分库、分表中进行查询。

这样的查询被称为路由。当使用 SQL 携带分片键进行查询时,根据分批键的不同可以分为直接路由、标准路由,以及笛卡尔路由。而不携带分片键的SQL,则采用广播路由查询。

二、官方文档解释

直接路由,条件苛刻,需要使用 Hint 方式分片,并且只分库部分表。

标准路由,推荐使用的分片方式,适用不包含关联查询或仅包含绑定表之间关联查询的SQL。

笛卡尔路由,无法根据分片键定位,需要笛卡尔积的方式进行,查询性能最低。

全库路由,用于处理对所有真实表的操作。

全库表路由,用于处理对数据库的操作。

全实例路由,用于处理对数据库授权语句的操作。

单表路由,用于处理对某一真实表的操作。

阻断路由,用于屏蔽对数据库的操作。

三、测试代码

指定 Hint 进行直接路由查询。

四、总结

本周,先简述下 SQL 路由引擎的作用与测试代码。

对源码有兴趣的同学可以阅读 shardingsphere-route.jar 包。

举报
领券