百倍提速!ShardingSphere 联邦查询批量 IN 查询深度优化

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

Calcite

使用 SQLancer 测试 ShardingSphere 联邦查询

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

ShardingSphere

Apache Calcite Catalog 拾遗之类型系统实现

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

Calcite

Calcite UDF 实战之 ShardingSphere 联邦查询适配 MySQL BIT_COUNT

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

Calcite

ShardingSphere Proxy 适配 MySQL addBatch/executeBatch 数组结果实战

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

ShardingSphere