举例说明
tb_user逻辑表 真实表 tb_user_1 tb_user_2 tb_user_3
执行sql select * from tb_user where id = 10
步骤
1.获取逻辑表的名称 分片键 片键查询条件 条件值
2.查询优化 目的将符合sharding规则的sql改写成为符合规范的
3.sql路由 路由的本质就是根据逻辑sql找到当前sql到底操作哪张表 例如 [商品ID%2 + 1];
4.sql改写 shardingjdbc将逻辑表改为通过路由找到的真实表 select * from tb_user_2 where id = 10
5.sql执行 shardingjdbc将改写后的sql语句(可能是多条)多线程并发执行发送sql语句对应的数据节点(数据源.物理表的名称)
6.结果归并 多个节点执行sql形成多个结果集 shardingjdbc将结果集进行合并 然后以jdbc的方式响应给orm框架