
百倍提速!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 绑定或者生成执行计划的过程中出现问题,但是看到...

前言 在上一篇文章 ShardingSphere 联邦查询 GROUPING 聚合结果问题分析中,我们详细介绍了联邦查询引擎实现 GROUPING 聚合函数存在的问题,当时笔者曾提到 SQLancer 测试工具,它能够通过一些科学的方法来发现 SQL 逻辑问题,帮助提升联邦查询引擎的 SQL 支持度。本文将为大家详细介绍 SQLancer 测试工具,以及工具中内置的几种测试方法,然后我们会...

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

前言 熟悉 Apache ShardingSphere 的朋友们,可能听说过 SQL Federation 功能,它主要适用于海量数据水平分片场景下,提供对跨节点关联查询、子查询、分页、排序、聚合查询等复杂查询语句的支持。SQL Federation 功能内部使用了 Apache Calcite 项目,来实现 SQL 优化和执行。随着 Calcite 1.38.0 版本的发布,Calcit...

问题背景 MySQL JDBC 驱动支持使用 addBatch 和 executeBatch 方法,进行批量写入操作。MySQL 提供了 allowMultiQueries 和 rewriteBatchedStatements 两个属性用于控制是否开启批量写入,如果用户在 JDBC URL 上开启 &allowMultiQueries=true&rewriteBatched...