Merged
add:union all + limit场景分支重排文档补充 #8899
liyangxAdd on Sep 29
add:union all + limit场景分支重排文档补充 #8899
Merged
Merged fromliyangx/docs-ob-aimasterintoopengauss/docsmaster
Total: 2 files changed+60-0
| @@ -157,9 +157,39 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 | |||
| 157 | - disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见《性能调优指南》->《SQL调优指南》->《典型SQL调优点》->《子查询调优》章节。 | 157 | - disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见《性能调优指南》->《SQL调优指南》->《典型SQL调优点》->《子查询调优》章节。 |
| 158 | - enable_sublink_pullup_enhanced:使用增强后的sublink查询重写规则,包括where、 having子句的非相关子链接提升和winmagic重写优化。 | 158 | - enable_sublink_pullup_enhanced:使用增强后的sublink查询重写规则,包括where、 having子句的非相关子链接提升和winmagic重写优化。 |
| 159 | - remove_redundant_distinct_group_by:去除ANY_sublink子查询中多余的distinct和group by子句,以支持子查询提升。 | 159 | - remove_redundant_distinct_group_by:去除ANY_sublink子查询中多余的distinct和group by子句,以支持子查询提升。 |
| 160 | +- union_all_faststart:对满足条件的无序 UNION ALL + LIMIT/OFFSET 查询,根据取数需求和分支成本估算值调整分支顺序,以改善首行和首批数据响应时间。该选项默认不启用。当分支数≥5 时,该特性还受 `union_all_faststart_limit_threshold` 参数控制。查询块须具有正数常量 LIMIT,且不包含顶层 ORDER BY(包括带 ORDER BY 的 WITH TIES)、PERCENT、聚合、分组、HAVING、DISTINCT、窗口函数或目标列表集合返回函数等排除条件。开启后,无序 LIMIT/OFFSET 返回的具体记录可能变化,实际性能收益取决于成本估算和数据分布。 | ||
| 160 | 161 | ||
| 161 | **默认值**:magicset | 162 | **默认值**:magicset |
| 162 | 163 | ||
| 164 | +## union_all_faststart_limit_threshold | ||
| 165 | + | ||
| 166 | +**参数说明**:开启 `rewrite_rule` 中的 `union_all_faststart` 后,设置 5 个及以上 UNION ALL 分支允许进行快速启动重排的最大取数需求量。取数需求量为 `LIMIT + OFFSET`,未指定 OFFSET 或 OFFSET 为 NULL 时按 0 计算。 | ||
| 167 | + | ||
| 168 | +该参数属于USERSET类型参数,请参考[表1](../database_administration_guide/reset_parameters.md)中对应设置方法进行设置。 | ||
| 169 | + | ||
| 170 | +**取值范围**:整型,0~INT\_MAX。 | ||
| 171 | + | ||
| 172 | +**默认值**:100。 | ||
| 173 | + | ||
| 174 | +**说明**: | ||
| 175 | + | ||
| 176 | +- 查询满足特性的其他适用条件,且 `LIMIT + OFFSET` 小于或等于该阈值时,5 个及以上分支按启动成本升序排列;超过阈值时跳过本特性的分支重排。 | ||
| 177 | +- 设置为 0 时禁用上述 5 个及以上分支的重排,不影响 2~4 分支的重排逻辑。 | ||
| 178 | +- 该参数是允许重排的需求量阈值,不是分支数量上限,也不改变 SQL 中 LIMIT/OFFSET 的取数语义。 | ||
| 179 | +- 只有 `rewrite_rule` 包含 `union_all_faststart` 时,该参数才对本特性生效。查询须由正数常量 LIMIT 直接约束 UNION ALL 结果,并通过排序、聚合等适用性检查;提高阈值不会取消这些限制。 | ||
| 180 | + | ||
| 181 | +**示例**: | ||
| 182 | + | ||
| 183 | +```sql | ||
| 184 | +SET rewrite_rule = 'union_all_faststart'; | ||
| 185 | +SET union_all_faststart_limit_threshold = 100; | ||
| 186 | +SHOW union_all_faststart_limit_threshold; | ||
| 187 | +RESET union_all_faststart_limit_threshold; | ||
| 188 | +RESET rewrite_rule; | ||
| 189 | +``` | ||
| 190 | + | ||
| 191 | +UNION ALL 分支重排的使用案例参见[案例:调整查询重写GUC参数rewrite_rule](https://docs.opengauss.org/zh/docs/latest/performance_tuning_guide/case_modifying_the_guc_parameter_rewrite_rule.html)。 | ||
| 192 | + | ||
| 163 | ## enable\_pbe\_optimization<a name="zh-cn_topic_0283137548_zh-cn_topic_0237124743_section4605202011486"></a> | 193 | ## enable\_pbe\_optimization<a name="zh-cn_topic_0283137548_zh-cn_topic_0237124743_section4605202011486"></a> |
| 164 | 194 | ||
| 165 | **参数说明**:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化。 | 195 | **参数说明**:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化。 |
| @@ -152,9 +152,39 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 | |||
| 152 | - disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见《性能调优指南》->《SQL调优指南》->《典型SQL调优点》->《子查询调优》章节。 | 152 | - disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见《性能调优指南》->《SQL调优指南》->《典型SQL调优点》->《子查询调优》章节。 |
| 153 | - enable_sublink_pullup_enhanced:使用增强后的sublink查询重写规则,包括where、 having子句的非相关子链接提升和winmagic重写优化。 | 153 | - enable_sublink_pullup_enhanced:使用增强后的sublink查询重写规则,包括where、 having子句的非相关子链接提升和winmagic重写优化。 |
| 154 | - remove_redundant_distinct_group_by:去除ANY_sublink子查询中多余的distinct和group by子句,以支持子查询提升。 | 154 | - remove_redundant_distinct_group_by:去除ANY_sublink子查询中多余的distinct和group by子句,以支持子查询提升。 |
| 155 | +- union_all_faststart:对满足条件的无序 UNION ALL + LIMIT/OFFSET 查询,根据取数需求和分支成本估算值调整分支顺序,以改善数据响应时间。该选项默认不启用。当分支数≥5 时,该特性还受 `union_all_faststart_limit_threshold` 参数控制。查询块须具有正数常量 LIMIT,且不包含顶层 ORDER BY(包括带 ORDER BY 的 WITH TIES)、PERCENT、聚合、分组、HAVING、DISTINCT、窗口函数或目标列表集合返回函数等排除条件。开启后,无序 LIMIT/OFFSET 返回的具体记录可能变化,实际性能收益取决于成本估算和数据分布。 | ||
| 155 | 156 | ||
| 156 | **默认值**:magicset | 157 | **默认值**:magicset |
| 157 | 158 | ||
| 159 | +## union_all_faststart_limit_threshold | ||
| 160 | + | ||
| 161 | +**参数说明**:开启 `rewrite_rule` 中的 `union_all_faststart` 后,设置 5 个及以上 UNION ALL 分支允许进行快速启动重排的最大取数需求量。取数需求量为 `LIMIT + OFFSET`,未指定 OFFSET 或 OFFSET 为 NULL 时按 0 计算。 | ||
| 162 | + | ||
| 163 | +该参数属于USERSET类型参数,请参考[表1](../database_administration_guide/reset_parameters.md)中对应设置方法进行设置。 | ||
| 164 | + | ||
| 165 | +**取值范围**:整型,0~INT\_MAX。 | ||
| 166 | + | ||
| 167 | +**默认值**:100。 | ||
| 168 | + | ||
| 169 | +**说明**: | ||
| 170 | + | ||
| 171 | +- 查询满足特性的其他适用条件,且 `LIMIT + OFFSET` 小于或等于该阈值时,5 个及以上分支按启动成本升序排列;超过阈值时跳过本特性的分支重排。 | ||
| 172 | +- 设置为 0 时禁用上述 5 个及以上分支的重排,不影响 2~4 分支的重排逻辑。 | ||
| 173 | +- 该参数是允许重排的需求量阈值,不是分支数量上限,也不改变 SQL 中 LIMIT/OFFSET 的取数语义。 | ||
| 174 | +- 只有 `rewrite_rule` 包含 `union_all_faststart` 时,该参数才对本特性生效。查询须由正数常量 LIMIT 直接约束 UNION ALL 结果,并通过排序、聚合等适用性检查;提高阈值不会取消这些限制。 | ||
| 175 | + | ||
| 176 | +**示例**: | ||
| 177 | + | ||
| 178 | +```sql | ||
| 179 | +SET rewrite_rule = 'union_all_faststart'; | ||
| 180 | +SET union_all_faststart_limit_threshold = 100; | ||
| 181 | +SHOW union_all_faststart_limit_threshold; | ||
| 182 | +RESET union_all_faststart_limit_threshold; | ||
| 183 | +RESET rewrite_rule; | ||
| 184 | +``` | ||
| 185 | + | ||
| 186 | +UNION ALL 分支重排的使用案例参见[案例:调整查询重写GUC参数rewrite_rule](https://docs.opengauss.org/zh/docs/latest/performance_tuning_guide/case_modifying_the_guc_parameter_rewrite_rule.html)。 | ||
| 187 | + | ||
| 158 | ## enable\_pbe\_optimization<a name="zh-cn_topic_0283137548_zh-cn_topic_0237124743_section4605202011486"></a> | 188 | ## enable\_pbe\_optimization<a name="zh-cn_topic_0283137548_zh-cn_topic_0237124743_section4605202011486"></a> |
| 159 | 189 | ||
| 160 | **参数说明**:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化。 | 190 | **参数说明**:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化。 |