# 原理流程

  1. 解析
  2. 路由
  3. 改写/执行
  4. 归并

# 解析

先将 SQL 进行语法解析,生成一颗语法树

img.png

# 路由

根据解析上下文匹配数据库和表的分片策略,并生成路由路径。 对于携带分片键的SQL,根据分片键操作符不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是IN)和范围路由(分片键的操作符是BETWEEN),不携带分片键的SQL则采用广播路由。根据分片键进行路由的场景可分为直接路由、标准路由、笛卡尔路由等。

# 改成

书写 MySQL 的时候面向逻辑表编写,最终由 Sharding-JDBC 去处理

# 执行

Sharding-JDBC采用一套自动化的执行引擎,分别关注 内存限制,连接限制

也就是说关注内存限制情况下,使用多线程去连接,假如有200个表,那么就启动200个线程,连接限制,会严格限制线程资源数,200表的话就会启动一个线程串行处理

# 归并

对于查询到的记录,在查询时使用降序在使用归并算法进行排序