背景信息 #
联邦查询适用于水平分片场景下,对跨数据节点 JOIN(绑定表不带分片键 JOIN、非绑定表的JOIN、单表和分片表 JOIN、单表和单表跨数据源 JOIN 等)、子查询(无法路由到单节点的子查询)、聚合查询(包含 Having、聚合查询部分函数包含 DISTINCT、表达式中嵌套聚合函数)、集合运算等场景进行支持。
参数解释 #
类名称:org.apache.shardingsphere.sqlfederation.config.SQLFederationRuleConfiguration
可配置属性:
| 名称 | 数据类型 | 说明 | 默认值 |
|---|---|---|---|
| sqlFederationEnabled | boolean | 是否开启联邦查询 | false |
| allQueryUseSQLFederation | boolean | 是否全部查询 SQL 使用联邦查询 | false |
| executionPlanCache | SQLFederationCacheOption | 执行计划缓存 | - |
| maxUsageMemoryPerQuery | String | 每个查询最大可用内存 | DBPlusEngine 运行时最大内存 |
| spillEnabled | boolean | 是否启用磁盘交换功能 | false |
| spillPath | String | 磁盘交换文件路径 | /tmp/dbplusengine/spill |
| spillCompressionEnabled | boolean | 是否启用磁盘交换文件压缩 | false |
执行计划缓存 #
类名称:org.apache.shardingsphere.sqlfederation.config.SQLFederationCacheOption
可配置属性:
| 名称 | 数据类型 | 说明 | 默认值 |
|---|---|---|---|
| initialCapacity | int | 执行计划缓存初始容量 | 2000 |
| maximumSize | long | 执行计划缓存最大容量 | 65535 |
| ttlMilliseconds | long | 执行计划缓存失效时间(单位:毫秒) | 86400000(1 天) |
配置示例 #
private SQLFederationRuleConfiguration createSQLFederationRuleConfiguration() {
SQLFederationCacheOption executionPlanCache = new SQLFederationCacheOption(2000, 65535L, 86400000L);
return new SQLFederationRuleConfiguration(true, false, executionPlanCache, "1M", true, "file:///tmp/dbplusengine/spill", true);
}