数据库中间件 Sharding-JDBC 源码分析 —— 结果归并
Posted 芋道源码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中间件 Sharding-JDBC 源码分析 —— 结果归并相关的知识,希望对你有一定的参考价值。
摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/result-merger/ 「芋道源码」欢迎转载,保留摘要,谢谢!
微信排版崩崩的,建议使用 PC 点击【阅读原文】。
本文主要基于 Sharding-JDBC 1.5.0 正式版
1. 概述
2. MergeEngine
2.2.1 AbstractStreamResultSetMerger
2.2.2 AbstractMemoryResultSetMerger
2.2.3 AbstractDecoratorResultSetMerger
2.1 SelectStatement#setIndexForItems()
2.2 ResultSetMerger
3. OrderByStreamResultSetMerger
3.1 归并算法
3.2 #next()
4. GroupByStreamResultSetMerger
4.1 AggregationUnit
4.2 #next()
5. GroupByMemoryResultSetMerger
5.1 #next()
6. IteratorStreamResultSetMerger
7. LimitDecoratorResultSetMerger
666. 彩蛋
RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
新的源码解析文章实时收到通知。每周更新一篇左右。
认真的源码交流微信群。
1. 概述
本文分享查询结果归并的源码实现。
正如前文《SQL 执行》提到的“分表分库,需要执行的 SQL 数量从单条变成了多条”,多个SQL执行结果必然需要进行合并,例如:
SELECT * FROM t_order ORDER BY create_time
在各分片排序完后,Sharding-JDBC 获取到结果后,仍然需要再进一步排序。目前有 分页、分组、排序、聚合列、迭代 五种场景需要做进一步处理。当然,如果单分片SQL执行结果是无需合并的。在《SQL 执行》不知不觉已经分享了插入、更新、删除操作的结果合并,所以下面我们一起看看查询结果归并的实现。
Sharding-JDBC 正在收集使用公司名单:传送门。
以上是关于数据库中间件 Sharding-JDBC 源码分析 —— 结果归并的主要内容,如果未能解决你的问题,请参考以下文章
数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 执行
数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键
数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析之删除SQL
数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析之查询SQL