
百倍提速!ShardingSphere 联邦查询批量 IN 查询深度优化
问题背景 最近,用户在测试 ShardingSphere 联邦查询功能时,反馈了 1 条 2w6k 行的超长 SQL,执行时出现了 Communications link failure 异常,SQL 在 Proxy 接入端执行了 20 多分钟后最终超时断开。 笔者刚看到这个异常,怀疑是超长 SQL 过于复杂,导致在 SQL 解析、SQL 绑定或者生成执行计划的过程中出现问题,但是看到这...

问题背景 最近,用户在测试 ShardingSphere 联邦查询功能时,反馈了 1 条 2w6k 行的超长 SQL,执行时出现了 Communications link failure 异常,SQL 在 Proxy 接入端执行了 20 多分钟后最终超时断开。 笔者刚看到这个异常,怀疑是超长 SQL 过于复杂,导致在 SQL 解析、SQL 绑定或者生成执行计划的过程中出现问题,但是看到这...

问题背景 上周笔者所在公司客户反馈,使用商业版联邦查询进行复杂 SQL 聚合分析时,出现了 StringIndexOutOfBoundsException 异常。根据客户反馈的异常信息,起初笔者觉得这只是一个简单的下标越界问题,于是快速通过 E2E 测试程序复现问题(如下图所示),并对下标越界的代码进行了增强。 但是问题似乎没有这么简单,修改后 E2E 测试仍然没有通过,根据断言结果来看...

注意:本文基于 Calcite main 分支 34989b0 版本源码进行学习研究,其他版本可能会存在实现逻辑差异,对源码感兴趣的读者请注意版本选择。 前言 在之前发布的深度探究 Apache Calcite SQL 校验器实现原理一文中,我们详细介绍了 Calcite 校验器的实现原理,在 SQL 校验的过程中,Calcite 会不断调用 deriveType 进行类型推断,当时由于篇...

TODO 写在最后 笔者因为工作原因接触到 Calcite,前期学习过程中,深感 Calcite 学习资料之匮乏,因此创建了 Calcite 从入门到精通知识星球,希望能够将学习过程中的资料和经验沉淀下来,为更多想要学习 Calcite 的朋友提供一些帮助。 欢迎关注 欢迎关注「端小强的博客」微信公众号,会不定期分享日常学习和工作经验,欢迎大家关注交流。

注意:本文基于 MyCat2 main 分支 ced134b 版本源码进行学习研究,其他版本可能会存在实现逻辑差异,对源码感兴趣的读者请注意版本选择。 前言 MyCat 是曾经较为流行的一款分库分表中间件,能够支持海量数据的水平分片,以及读写分离、分布式事务等功能。MyCat2 在原有功能的基础上增加了分布式查询引擎,该引擎基于 Calcite 项目实现,能够将 SQL 编译为关系代数...