检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
Hint调优的效果可以借助explain语法进行分析。通过explain可以查看使用Plan Hint后目标SQL的计划,对比计划是否符合要求以验证Plan Hint的效果。explain有多种计划展示的模式,通过explain_perf_mode进行控制。本节的示例一般通过设置expl
使用向量化执行引擎进行调优 GaussDB数据库支持行执行引擎和向量化执行引擎,分别对应行存表和列存表。 一次一个batch,读取更多数据,节省IO。 batch中记录较多,CPU cache命中率提升。 Pipeline模式执行,函数调用次数少。 一次处理一批数据,效率高。 G
对于提升的子查询,skew hint支持直接使用子查询名进行hint。如果明确子查询提升后的哪一个基表存在倾斜,则直接使用基表进行hint的可用性更高。 无论对于表或列,若存在别名,则优先使用别名进行hint。 父主题: 使用Plan Hint进行调优
指定agg算法的Hint 功能描述 在进行agg算法时可以指定agg的方法。 语法格式 use_hash_agg[(@queryblock)], use_sort_agg[(@queryblock)] 参数说明 @queryblock 见指定Hint所处的查询块Querybloc
指定agg算法的Hint 功能描述 在进行agg算法时可以指定agg的方法。 语法格式 use_hash_agg[(@queryblock)], use_sort_agg[(@queryblock)] 参数说明 @queryblock请参见指定Hint所处于的查询块Querybl
指定agg算法的Hint 功能描述 在进行agg算法时可以指定agg的方法。 语法格式 use_hash_agg[(@queryblock)], use_sort_agg[(@queryblock)] 参数说明 @queryblock请参见指定Hint所处的查询块Queryblo
使用向量化执行引擎进行调优 GaussDB数据库支持行执行引擎和向量化执行引擎,分别对应行存表和列存表。列存表和向量化执行引擎具有以下优点: 一次一个batch,读取更多数据,节省IO。 batch中记录较多,CPU cache命中率提升。 Pipeline模式执行,函数调用次数少。
见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效。 “#”、“+”、“-”、“*”,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。“+”、“-”、“*”表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对应的单
*/ i_product_name product_name ... 该hint表示:item表使用索引i进行扫描。生成计划如下所示: 父主题: 使用Plan Hint进行调优
hint,hint未被使用可能由于: 计划中不需要进行重分布。 hint指定的列包含分布键。 hint指定倾斜信息有误或不完整,如对于join优化未指定值。 倾斜优化的GUC参数处于关闭状态。 父主题: 使用Plan Hint进行调优
--work_mem 会对计划生成执行有所影响若后续进行其他操作需要重置: reset work_mem; --将内存设置回退 可以看到对sublink进行了hashed操作,若不使用该hint,则会使用普通计划。 父主题: 使用Plan Hint进行调优
数据库在对查询进行逻辑优化时通常会将可以提升的子查询提升到上层来避免嵌套执行,但对于某些本身选择率较低且可以使用索引过滤访问页面的子查询,嵌套执行不会导致性能下降过多,而提升之后扩大了查询路径的搜索范围,可能导致性能变差。对于此类情况,可以使用no_expand hint进行调试。大多数情况下不建议使用此hint。
Hint调优的效果可以借助explain语法进行分析。通过explain可以查看使用Plan Hint后目标SQL的计划,对比计划是否符合要求以验证Plan Hint的效果。explain有多种计划展示的模式,通过explain_perf_mode进行控制。本节的示例一般通过设置expl
然而,如上面计划所示,在使用了predpush hint后,pt3、pt4在做join之前先基于pt2表进行了一次条件过滤,join后返回的结果集较小,可以有效提升性能。 父主题: 使用Plan Hint进行调优
见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 “#”、“+”、“-”、“*”,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。“+”、“-”、“*”表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对应的单
的hint失效。注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。 leading hint中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2)) leading(((t1 t2) t3)),此时如果存在leading((t2
优化器支持一系列查询改写规则,可以对SQL语句进行等价的逻辑改写,从而生成更好的执行计划。但在一些场景下,用户并不希望改写SQL语句、或者优化器的改写会导致计划跳变,对于这些特定的场景,需要能够使用hint对改写规则进行控制,让优化器按照特定的方式进行改写。目前数据库支持对ANY/EXIS
表示在当前查询块生效。 broadcast和redistribute no表示hint的stream方式不使用。 table_list为进行stream操作的单表或多表join结果集,见参数说明。 gather gather hint可以指定三种计划生成方式: REL:只生成基
见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 table表示hint指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。 index表示使用indexscan或indexonlyscan的hint时,指定的索引名称,当前只能指定一个。 对于inde
对于提升的子查询,skew hint支持直接使用子查询名进行hint。如果明确子查询提升后的哪一个基表存在倾斜,则直接使用基表进行hint的可用性更高。 无论对于表或列,若存在别名,则优先使用别名进行hint。 父主题: 使用Plan Hint进行调优