Merged
add:union all + limit场景分支重排文档补充 #8899
liyangxAdd on Sep 29
add:union all + limit场景分支重排文档补充 #8899
Merged
liyangxAdd on Sep 29
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**默认值**:magicset162**默认值**: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**默认值**:magicset157**默认值**: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)形式执行的语句进行查询计划的优化。