数据库中间件 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. 彩蛋

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表

  2. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。

  3. 新的源码解析文章实时收到通知。每周更新一篇左右。

  4. 认真的源码交流微信群。


1. 概述

本文分享查询结果归并的源码实现。

正如前文《SQL 执行》提到的“分表分库,需要执行的 SQL 数量从单条变成了多条”,多个SQL执行结果必然需要进行合并,例如:

 
   
   
 
  1. 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

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由之分库分表路由

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由之分库分表配置