华为云用户手册

  • constraint_exclusion 参数说明:控制查询优化器使用表约束查询的优化。 参数类型:枚举类型 参数单位:无 取值范围: on:表示检查所有表的约束。 off:表示不检查约束。 partition:表示只检查继承的子表和UNION ALL子查询。 默认值:partition 当constraint_exclusion为on时,优化器用查询条件和表的CHECK约束比较,并且在查询条件和约束冲突的时候忽略对表的扫描。 目前,constraint_exclusion默认被打开,通常用来实现表分区。为所有的表打开该参数时,对于简单的查询强加了额外的规划,并且对简单查询没有什么好处。如果不用分区表,可以关掉该参数。
  • cursor_tuple_fraction 参数说明:优化器估计游标获取行数在总行数中的占比。 参数类型:浮点型 参数单位:无 取值范围:0 ~ 1 默认值:0.1 比默认值小的值与使用“fast start”为游标规划的值相偏离,从而使得前几行恢复的很快而抓取全部的行需要很长的时间。比默认值大的值加大了总的估计时间。在最大的值1.0处,像正常的查询一样规划游标,只考虑总的估计时间和传送第一行的时间。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,如果实际应用中游标操作经常访问表中的大部分行,可以适当增加此参数的值。 设置不当的风险与影响:设置不当可能导致查询性能下降。
  • enable_light_proxy 参数说明:设置优化器是否对CN上简单查询的执行进行优化,应用端和内核端字符集不匹配时,该参数不生效,建议建库时将字符集设为UTF8。 参数类型:布尔型 参数单位:无 取值范围: on:表示优化器将优化CN上简单查询的执行。 off:表示不使用优化。 默认值:on 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭后可能会导致简单查询执行压力集中在CN上。
  • enable_stream_pbe 参数说明:设置优化器在数据节点上是否对STREAM分布式计划使用缓存执行计划的优化。 参数类型:布尔型 参数单位:无 取值范围: on:表示优化器在数据节点上对STREAM分布式计划使用缓存执行计划的优化。 off:表示不使用优化。 默认值:on 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭后可能会增加生成计划的开销。
  • enable_opfusion 参数说明:控制是否对简单查询进行查询优化。 该开关优化DN的查询性能,可以设置max_datanode_for_plan查看一个查询DN的执行计划,如果DN的执行计划中带有[Bypass]标识则代表该查询在该DN可以查询优化。 简单查询限制如下: 只支持indexscan和indexonlyscan,且全部WHERE语句的过滤条件都在索引上。 只支持单表增删改查,不支持join、using。 只支持行存表,不支持分区表,表不支持有触发器。 不支持active sql、QPS等信息统计特性。 不支持正在扩容和缩容的表。 不支持查询或者修改系统列。 只支持简单SELECT语句,例如: SELECT c3 FROM t1 WHERE c1 = ? and c2 =10; 仅可以查询目标表的列,c1和c2列为索引列,后边可以是常量或者参数,可以使用 for update。 只支持简单INSERT语句,例如: INSERT INTO t1 VALUES (?,10,?); 仅支持一个VALUES,VALUES里面的类型可以是常量和参数,不支持returning。 只支持简单DELETE语句,例如: DELETE FROM t1 WHERE c1 = ? and c2 = 10; c1和c2列为索引列,后边可以是常量或者参数。 只支持简单UPDATE语句,例如: UPDATE t1 SET c3 = c3+? WHERE c1 = ? and c2 = 10; c3列修改的值可以是常量和参数,也可以是一个简单的表达式,c1和c2列为索引列,后边可以是常量或者参数。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用。 off:表示不使用。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭有可能导致查询性能劣化。
  • gpc_clean_timeout 参数说明:本参数用于控制不使用的共享计划的保留时间。在开启enable_global_plancache的情况下,如果共享计划列表里的计划超过gpc_clean_timeout的时间没有被使用,则会被清理掉。 参数类型:整型 参数单位:秒(s) 取值范围:300 ~ 86400 默认值:1800(即30min) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,设置为300,不带单位,表示300s;设置为30min,带单位,表示30min。取值如果要带单位,必须为s、min、h、d。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过大可能导致GPC占用内存过多,建议充分测试后设置合理值。
  • enable_global_stats 参数说明:标识当前统计信息模式。 参数类型:布尔型 参数单位:无 取值范围: on:表示采用全局统计信息收集模式。 off:表示收集集群第一个节点的统计信息,此时可能会影响生成查询计划的质量,但信息收集性能较优,建议谨慎设置。 默认值:on 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭可能会影响集群环境下查询计划生成质量。
  • from_collapse_limit 参数说明:根据生成的FROM列表的项数来判断优化器是否将子查询合并到上层查询,如果FROM列表项个数小于等于该参数值,优化器会将子查询合并到上层查询。 参数类型:整型 参数单位:无 取值范围:1 ~ 2147483647‬ 默认值:8 比默认值小的数值将降低规划时间,但是可能生成差的执行计划。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,如果查询中经常需要处理多个子查询,并且这些子查询可以有效地合并以提高查询性能,可以考虑增大此参数的值。反之,如果合并子查询导致性能下降或增加了优化器生成执行计划的时间,可以考虑减小该值。 设置不当的风险与影响:设置不当可能会导致查询性能下降。
  • enable_pbe_optimization 参数说明:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化,优化原理是使FQS选择gplan计划。 参数类型:布尔型 参数单位:无 取值范围: on:表示优化器将优化PBE语句的查询计划,在FQS下选择gplan。 off:表示不使用优化。 默认值:on 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,在不希望FQS选择gplan时可设置为off。 设置不当的风险与影响:关闭可能会导致某些场景走cplan。
  • costbased_rewrite_rule_timeout 参数说明:执行的SQL在计划生成阶段时,如果使用各规则做代价评估的整体时间超过该参数设置的超时时间,则对本次请求后续流程关闭基于代价的评估策略,转化为基于规则的改写策略。当查询改写阶段开启基于代价的评估策略后该参数生效。 参数类型:整型 参数单位:毫秒(ms) 取值范围:-1 ~ 300000 默认值:-1 该参数受GUC参数costbased_rewrite_rule影响,当costbased_rewrite_rule值不为none时,该参数生效。 如果设置该参数值为0,表示对当前SQL关闭基于代价的改写策略。 如果设置该参数值为-1,表示对当前SQL关闭超时时间控制。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:可根据实际业务需求评估调整,当该值设置过大或过小时都可能带来额外的性能开销,影响最终的查询性能。
  • analysis_options 参数说明:通过开启对应选项使用相应的定位功能,包括数据校验,性能统计等,具体参见取值范围中的描述。 参数类型:字符串 参数单位:无 取值范围: 该参数每次设置将会通过集合操作的方式对当前值做修改: gaussdb=# show analysis_options; analysis_options ------------------------------------------------------------ ALL,on(),off(LLVM_COMPILE,HASH_CONFLICT,STREAM_DATA_CHECK)(1 row)gaussdb=# SET analysis_options = 'on(LLVM_COMPILE)';SETgaussdb=# show analysis_options; analysis_options ----------------------------------------------------------- ALL,on(LLVM_COMPILE),off(HASH_CONFLICT,STREAM_DATA_CHECK)(1 row)gaussdb=# SET analysis_options = 'on(HASH_CONFLICT)';SETgaussdb=# show analysis_options; analysis_options ----------------------------------------------------------- ALL,on(LLVM_COMPILE,HASH_CONFLICT),off(STREAM_DATA_CHECK)(1 row)gaussdb=# SET analysis_options = 'off(ALL)';SETgaussdb=# show analysis_options; analysis_options ------------------------------------------------------------ ALL,on(),off(LLVM_COMPILE,HASH_CONFLICT,STREAM_DATA_CHECK)(1 row) LLVM_COMPILE:表示在explain performance显示界面中显示每个线程的codegen编译时间。 HASH_CONFLICT:表示在DN进程的gs_log目录的log日志中显示hash表的统计信息,包括hash表大小、hash链长、hash冲突情况。 STREAM_DATA_CHECK:表示对网络传输前后的数据进行CRC校验。 默认值:off(ALL),表示不开启任何定位功能。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如需手动设置,需要明确预期显示的结果是否符合需求。
  • costbased_rewrite_rule_max_iterations 参数说明:执行的SQL在计划生成阶段时,如果对同一规则中满足做代价评估的条件数超过该参数的取值,则对本次请求中超过阈值的条件关闭基于代价的评估策略,转化为基于规则的改写策略。当查询改写阶段开启基于代价的评估策略后该参数生效。 参数类型:整型 参数单位:无 取值范围:0 ~ 1000 默认值:10 该参数受GUC参数costbased_rewrite_rule影响,当costbased_rewrite_rule值不为none时,该参数生效。 如果设置该参数值为0,表示对当前SQL关闭基于代价的改写策略。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:可根据实际业务需求评估调整,当该值设置过大或过小时都可能带来额外的性能开销,影响最终的查询性能。
  • enable_trigger_shipping 参数说明:控制触发器场景是否允许将触发器下推到DN执行。 参数类型:布尔型 参数单位:无 取值范围: on:表示允许将触发器下推到DN执行。 off:表示不允许将触发器下推到DN执行,在CN执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:若关闭该参数,会将性能负载集中在CN节点,不能最大化利用集群性能,建议打开该参数。
  • enable_rep_table_strict_shipping 参数说明:进行复制表DML操作时,控制在复制表的下推充要条件判断失败时的行为。 参数类型:布尔型 参数单位:无 取值范围: on:表示进行复制表DML操作时,如果对复制表的下推充要条件判断失败,则禁止下推。 off:表示进行复制表DML操作时,如果对复制表的下推充要条件判断失败,不禁止下推,仅在日志中打印提示信息。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_csqual_pushdown 参数说明:设置进行查询时,是否要将过滤条件下推,进行Rough Check。 参数类型:布尔型 参数单位:无 取值范围: on:表示进行查询时,将过滤条件下推,进行Rough Check。 off:表示进行查询时,不将过滤条件下推,进行Rough Check。 默认值:on 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果查询涉及大量数据的过滤,并且这些数据分布在不同的节点上,关闭过滤条件下推可能会带来性能的下降。
  • explain_perf_mode 参数说明:此参数用来指定explain的显示格式。 参数类型:枚举类型 参数单位:无 取值范围:normal、pretty、summary、run normal:代表使用默认的打印格式。 pretty:代表使用 GaussDB 改进后的新显示格式。新的格式层次清晰,计划包含了plan node id,性能分析简单直接。 summary:是在pretty的基础上增加了对打印信息的分析。 run:在summary的基础上,将统计的信息输出到csv格式的文件中,以便于进一步分析。 默认值:pretty pretty模式当前只支持包含stream算子的计划,不支持下发语句到DN节点的计划。因此显示格式会受enable_stream_operator参数影响,当enable_stream_operator设置为off时无法生成包含stream算子的计划。
  • enable_partition_pseudo_predicate 参数说明:在指定分区查询场景下,是否使用伪谓词改写的方式计算指定分区查询的选择率。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用伪谓词改写。 off:表示不使用伪谓词改写。 默认值:off 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_remotejoin 参数说明:控制是否允许将连接操作计划下推到DN执行。 参数类型:布尔型 参数单位:无 取值范围: on:表示允许将连接操作计划下推到DN执行。 off:表示不允许将连接操作计划下推到DN执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果参与JOIN的表数据量很大,这些数据已经根据JOIN条件分散在不同的数据节点上,并且数据节点具备足够的计算资源,可以在本地高效地完成JOIN操作,那么关闭该参数将可能会带来查询性能的下降。
  • enable_remotegroup 参数说明:控制是否允许将group by与aggregates执行计划下推到DN执行。 参数类型:布尔型 参数单位:无 取值范围: on:表示允许将group by与aggregates执行计划下推到DN执行。 off:表示不允许将group by与aggregates执行计划下推到DN执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果查询涉及到大量数据的分组,并且数据分布在多个数据节点上,关闭该参数可能会带来查询性能的下降。
  • enable_partitionwise 参数说明:分区表连接操作是否选择智能算法。 参数类型:布尔型 参数单位:无 取值范围: on:表示选择智能算法。 off:表示不选择智能算法。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:打开前确认是否开启SMP,否则可能影响非SMP场景下分区表Join操作的性能。
  • cost_param 参数说明:该参数用于控制在特定的客户场景中,使用不同的估算方法,使得代价模型估算更准确。通过将参数修改为不同的值,选择开启不同的方法。此参数可以同时控制多种方法,每一种方法由不同的数字编号控制,参数取值与方法对应的数字编号做“与”操作的结果不为0时,表示该方法开启。 当cost_param & 1不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确。当前版本已弃用cost_param & 1不为0时的路径,默认选择更优的估算公式。 当cost_param & 2不为0,表示求多个过滤条件(Filter)的选择率时,选择最小的作为总的选择率,而非两者乘积,此方法在过滤条件的列之间关联性较强时估算更加准确。 当cost_param & 4不为0,表示在进行stream节点估算时,选用调试模型,该模型不推荐用户使用。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647‬ 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:在明确需要调整选择率的场景后,设置对应参数值。 设置不当的风险与影响:设置不当可能会导致最终的代价估算不符合预期,建议在充分测试后确认应当设置的参数值。
  • enable_remotelimit 参数说明:控制是否允许将LIMIT子句执行计划下推到DN执行。 参数类型:布尔型 参数单位:无 取值范围: on:表示允许将LIMIT子句执行计划下推到DN执行。 off:表示不允许将LIMIT子句执行计划下推到DN执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果查询涉及到对大数据量的快速裁剪,并且数据分布在多个节点上,关闭此参数可能会降低查询性能。
  • enable_remotesort 参数说明:控制是否允许将ORDER BY子句操作计划下推到DN执行。 参数类型:布尔型 参数单位:无 取值范围: on:表示允许将ORDER BY子句操作计划下推到DN执行。 off:表示不允许将ORDER BY子句操作计划下推到DN执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果查询涉及到大量数据的排序,并且数据分布在多个数据节点上,关闭该参数可能会带来性能的下降。
  • cost_model_version 参数说明:此参数用来指定优化器代价模型的版本。可以视作一个保护参数,用来禁用最新的优化器代价模型,保持和旧版本计划一致。 参数类型:整型 参数单位:无 取值范围:0、1、2、3、4、5 0:表示使用最新的cost估算模型。当前版本等价于5。 1:表示使用原始的cost估算模型。 2:表示在1的基础上,使用增强的coalesce表达式估算、hash join代价估算、semi/anti join代价估算。 3:表示在2的基础上,使用边界矫正估计器估算NDV,indexscan的hint可以作用于indexonlyscan。 4:表示在3的基础上,使用分区级统计信息参与代价估算。 5:表示在4的基础上,增强outer join计算Filter的代价估算,使得基于代价的查询重写更加准确;增强计算选择率时对outer join外表的filter条件的计算优化,可用enable_poisson_outer_optimization参数单独控制。 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:数据库升级时,建议和升级前版本保持一致;新安装环境时,建议设置为默认值。 设置不当的风险与影响:改变此参数,可能会导致很多SQL计划的改变,因此修改前请谨慎评估。
  • enable_fast_query_shipping 参数说明:控制查询优化器是否使用分布式框架。 参数类型:布尔型 参数单位:无 取值范围: on:表示执行计划在CN和DN上各自生成。 off:表示使用分布式框架,即执行计划在CN上生成,然后发送到DN中执行。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:若关闭该参数,可能导致生成的计划不能更高效地利用分布式集群性能,建议打开该参数。
  • autovacuum_analyze_threshold 参数说明:触发对ASTORE表ANALYZE操作的删除、插入或更新元组的最小数量值。触发ANALYZE的阈值=autovacuum_analyze_threshold+reltuples(表上元组的个数)*autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时才会对这个表执行ANALYZE操作。若表上存在全局二级索引,则当表上被删除、插入和更新的记录数超过阈值的20倍时,才会对全局二级索引执行ANALYZE操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响: 该参数设置得过低,会导致频繁的ANALYZE操作,增加系统开销,降低性能。 该参数设置得过高,表中的统计信息可能会过时,从而导致查询计划不准确,影响查询性能。
  • autovacuum_analyze_scale_factor 参数说明:ANALYZE时表的规模因子,用于计算触发ANALYZE的阈值。触发ANALYZE的阈值=autovacuum_analyze_threshold+reltuples(表上元组的个数)*autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时,才会对这个表执行ANALYZE操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.1 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响: 该参数设置得过低,会导致频繁的ANALYZE操作,增加系统开销,降低性能。 该参数设置得过高,可能会导致ANALYZE的频率过低,表中的统计信息可能会过时,从而导致查询计划不准确,影响查询性能。
  • autovacuum_freeze_max_age 参数说明:指定ASTORE表pg_class.relfrozenxid字段在超过多少个事务后,会强制执行VACUUM操作。即使自动清理被禁用,系统也会启动AUTOVACUUM线程。清理操作还允许从pg_clog/子目录中删除旧文件。 参数类型:整型 参数单位:无 取值范围:100000 ~ 576460752303423487 默认值:4000000000 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。如果数据库中的ASTORE表经常进行大量的更新和删除操作,那么建议将该参数设置为较小的值,以便及时回收垃圾。如果数据库中的ASTORE表很少进行更新和删除操作,那么可以将该参数设置为较大的值,以减少自动垃圾回收的频率。 设置不当的风险与影响:在ASTORE表中: 该参数设置得过低,会导致频繁的自动垃圾回收操作,增加系统开销,降低性能。 该参数设置得过高,会导致自动垃圾回收的延迟,从而可能导致大量的无效数据占用磁盘空间,影响数据库性能。
  • autovacuum_vacuum_cost_limit 参数说明:设置在自动VACUUM操作里使用的开销限制数值。 参数类型:整型 参数单位:无 取值范围:-1 ~ 10000。其中-1表示使用常规的vacuum_cost_limit。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • 对自动清理进行参数调优 AUTOVACUUM清理速度与autovacuum_vacuum_cost_delay、autovacuum_vacuum_cost_limit等参数强相关,当业务表进行高并发写入时,使用默认的参数配置可能会出现AUTOVACUUM清理速度跟不上表空间膨胀场景,导致空间膨胀、性能下降等。例如,对Astore表进行高并发更新、插入删除,尤其是含有全局分区索引的大分区表(需要多次扫描清理全局分区索引),因此建议业务定时巡检确认空间膨胀情况,并对AUTOVACUUM参数进行针对性调优或定时在业务低峰期执行手动VACUUM,避免空间持续膨胀。
共99354条