我们去官网上看看执行引擎的一些概念:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/features/sharding/principle/execute/
下面看看源码:
首先初始化
按数据库分组
内存限制模式需要维持数据库连接,如果将所有数据加载内存,有内存溢出,可以选择流式归并。但是对于连接限制模式必须选择内存归并,因为连接有限的原因吧,数据库连接资源在所有查询结果集装载至内存之后被释放掉,所以不需要考虑加锁
连接模式以及每个连接上的sql分组
例如maxConnectionsSizePerQuery为2,sqlUnits为4 。
maxConnectionsSizePerQuery小于sqlUnits数,那用限制连接模式。sqlUnitPartitions的个数为2,则连接数为2,每个连接上执行2个sql
例如maxConnectionsSizePerQuery为6,sqlUnits为5。
maxConnectionsSizePerQuery大于sqlUnits数,那用内存模式,不限制连接数,sqlUnitPartitions为5,则连接数为5,每个连接执行一个sql
创建执行单元
分成3个执行组,每个组共享一个连接
按分组执行单元,每个分组异步个线程
获取分组结果