检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
block章节,可省略,表示在当前查询块生效。 “#”、“+”、“-”、“*”,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。“+”、“-”、“*”表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对应的单
行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 表1 GS_OPT_MODEL字段 名称 类型 描述 oid oid 数据库对象id。 template_name name 机器学习模型的模板名,决定训练和预测调用的函数接
GS_OPT_MODEL是启用AiEngine执行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 表1 GS_OPT_MODEL字段 名称 类型 描述 template_name name 机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。
GS_OPT_MODEL是启用AiEngine执行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 表1 GS_OPT_MODEL字段 名称 类型 描述 template_name name 机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。
误。 list中的表必须在当前层或提升的子查询中存在。 list中的表在当前层或提升的子查询中必须是唯一的。如果不唯一,需要使用不同的别名进行区分。 同一个表只能在list里出现一次。 如果表存在别名,则list中的表需要使用别名。 例如: leading(t1 t2 t3 t4
tore_returns和item三表的结果集时,最后的两表关联使用nestloop。生成计划如下所示: 父主题: 使用Plan Hint进行调优
hint,hint未被使用可能由于: 计划中不需要进行重分布。 hint指定的列为包含分布键。 hint指定倾斜信息有误或不完整,如对于join优化未指定值。 倾斜优化的GUC参数处于关闭状态。 父主题: 使用Plan Hint进行调优
然而,如上面计划所示,在使用了predpush hint后,pt3,pt4在做join之前先基于pt2表进行了一次条件过滤,join后返回的结果集较小,可以有效提升性能。 父主题: 使用Plan Hint进行调优
gather(REL|JOIN|ALL) 参数说明 broadcast和redistribute no表示hint的stream方式不使用。 table_list为进行stream操作的单表或多表join结果集,见参数说明。 gather gather hint可以指定三种计划生成方式: REL:只生成基
*/ i_product_name product_name ... 该hint表示:item表使用索引i进行扫描。生成计划如下所示: 父主题: 使用Plan Hint进行调优
指定agg算法的Hint 功能描述 在进行agg算法时可以指定agg的方法。 语法格式 use_hash_agg[(@queryblock)], use_sort_agg[(@queryblock)] 参数说明 @queryblock请参见指定Hint所处于的查询块Querybl
数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand Hint进行调试。大多数情况下不建议使用此hint。
数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand Hint进行调试。大多数情况下不建议使用此hint。
Hint调优的效果可以借助explain语法进行分析。通过explain可以查看使用Plan Hint后目标SQL的计划,对比计划是否符合要求以验证Plan Hint的效果。explain有多种计划展示的模式,通过explain_perf_mode进行控制。本节的示例一般通过设置expl
hint支持直接使用子查询名进行hint。如果明确子查询提升后的哪一个基表存在倾斜,则直接使用基表进行hint的可用性更高。 无论对于表或列,若存在别名,则优先使用别名进行hint。 示例 指定单表倾斜 原query中进行hint。 采用如下查询进行skew hint倾斜调优的举
当blockname的hint使用@queryblock进行指定,而不是在当前查询块直接生效时,比如blockname(@sel$2 new_qb_name)。 其他Hint无法通过@new_qb_name进行指定。此时new_qb_name只作为子链接的名字,可以使用Hint进行运算指定。 通过blockname(@sel$2
node_name只支持设置data node名字,不支持设置coodninator名字。 node_name不支持通过SET语句进行修改,只能用在plan hint里。 node_name不支持通过gs_guc进行修改。 node_name仅支持简单查询语句,不支持带union,union all子查询,多表关联等复杂查询语句。
对于提升的子查询,skew hint支持直接使用子查询名进行hint。如果明确子查询提升后的哪一个基表存在倾斜,则直接使用基表进行hint的可用性更高。 无论对于表或列,若存在别名,则优先使用别名进行hint。 父主题: 使用Plan Hint进行调优
指定agg算法的Hint 功能描述 在进行agg算法时可以指定agg的方法。 语法格式 use_hash_agg[(@queryblock)], use_sort_agg[(@queryblock)] 参数说明 @queryblock请参见指定Hint所处的查询块Queryblo
的hint失效。注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。 leading hint中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2)) leading(((t1 t2) t3)),此时如果存在leading((t2