更新时间:2025-05-29 GMT+08:00

SPM计划管理

spm_enable_plan_capture

参数说明此参数用来控制SPM计划捕获功能的计划捕获模式。该参数可在PDB级别设置。

参数类型:枚举类型

参数单位:

取值范围

  • off:表示不开启计划捕获功能。
  • auto:表示开启自动计划捕获功能。在这种模式下,SQL计划被捕获的前置条件是SQL被执行两次及以上。
  • manual:表示开启手动计划捕获功能。在这种模式下,SQL计划被捕获的前置条件不需要满足SQL被执行两次及以上。
  • store:基于auto选项的行为,在这种模式下,SQL计划被捕获的前置条件不需要满足SQL被执行两次及以上,所有计划的状态都捕获为UNACC状态。

默认值off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:不使用SPM功能时推荐使用默认值,若使用SPM则根据需求进行设置。

设置不当的风险与影响:若不使用SPM相关功能,打开该参数会导致一定的性能劣化。

在升级期间,无论该开关是否开启,都不会捕获新的计划的outline,因为升级期间可能发生升级回滚,如果存储了新产生的outline,升级回滚后,可能会存在outline版本兼容性问题。

spm_enable_plan_selection

参数说明此参数用来控制是否启用SPM计划选择功能。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围

  • on:表示启用计划选择功能。
  • off:表示关闭计划选择功能。

默认值off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:不使用SPM功能时推荐使用默认值,若使用SPM,需要设置为on。

设置不当的风险与影响:若不使用SPM相关功能,打开该参数会导致一定的性能劣化。

spm_plan_capture_filter

参数说明:此参数用来指定要捕获的数据库与Schema。该参数可在PDB级别设置。

参数类型:字符串

参数单位:

取值范围:最多捕获10000个Schema,计数包括重复Schema。

参数的格式为:“$db1_oid:$schema1_oid, $db2_oid:$schema2_oid..”,例如符合该格式的一组参数“33245:56432,44321:12332,55432:65432”表示:

  • 33245:56432表示捕获DB oid为33245且schema oid为56432下的SQL计划。
  • 44321:12332表示捕获DB oid为44321且schema oid为12332下的SQL计划。
  • 55432:65432表示捕获DB oid为55432且schema oid为65432下的SQL计划。

默认值:"",表示SPM的计划捕获和计划选择功能包含所有Schema。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。

设置建议:推荐使用默认值。若只需收集指定schema的计划或schema的数据量超过阈值,可以指定相关schema。

设置不当的风险与影响:使用SPM相关功能时,如果设置的schema oid不准确,可能导致收集不了所有计划。

spm_plan_global_cached_size

参数说明:指定SPM global plan cache的大小。

参数类型整型

参数单位:kB

取值范围:10240 ~ 20971520

默认值:1048576(即1GB)

设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,设置为10240,不带单位,表示10240kB;设置为1GB,带单位,表示1GB。取值如果要带单位,必须为kB、MB、GB。

设置建议:建议在压力大的场景中增加数据库节点中此参数配置。

设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM功能的使用导致性能下降,过大会导致内存占用升高,请酌情设置。

spm_plan_session_cached_size

参数说明:指定SPM session plan cache的大小。该参数可在PDB级别设置。

参数类型整型

参数单位kB

取值范围:1 ~ 1048576

默认值:1024(即1MB)。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。例如,设置为1024,不带单位,表示1024kB;设置为1GB,带单位,表示1GB。取值如果要带单位,必须为kB、MB、GB。

设置建议:建议在压力大的场景中增加数据库节点中此参数配置。

设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM功能的使用导致性能下降,过大会导致内存占用升高,请酌情设置。

spm_plan_capture_max_plannum

参数说明:指定单个数据库最大落盘计划的数量,分别对应PG_CATALOG.GS_SPM_BASELINE和PG_CATALOG.GS_SPM_PLAN_HISTORY中的记录数。

参数类型:整型

参数单位:

取值范围:1 ~ 1000000

默认值:200000

设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM捕获计划的数量,导致新增计划无法管理,过大会影响磁盘空间,请酌情设置。

spm_plan_retention_days

参数说明:指定不使用的计划在磁盘上的预留时间。

参数类型:整型

参数单位:d(天)

取值范围:1 ~ 1095

默认值:365

设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

设置建议:推荐使用默认值,若磁盘空间不足或业务频繁变更,可以考虑将该值设置小一些。

设置不当的风险与影响:使用SPM相关功能时,过小会频繁淘汰计划导致无法管理。

spm_enable_log_detail

参数说明在使用SPM的过程中,控制是否启用notice SPM关键执行流程。该参数通常和如下两个参数的设置配合使用,用于在gsql中查看SPM的执行过程:client_min_messages=notice;logging_module='on(SPM_KEY_FLOW)'。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围

  • on:表示启用。
  • off:表示关闭。

默认值off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:使用SPM相关功能时,建议只在调试时使用,设置不当会导致大量日志。

spm_enable_baseline_cleanup

参数说明是否启用baseline定时清理功能。

参数类型:布尔型

参数单位:

取值范围

  • on:表示启用baseline定时清理功能。
  • off:表示关闭baseline定时清理功能。

默认值on

设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:使用SPM相关功能时,若设置为off则参数spm_plan_retention_daysspm_plan_history_reserved_percentage无效,不会清理过时计划,也不会清理历史记录。

spm_enable_plan_history_logging

参数说明是否启用查询计划跳变历史记录功能,此参数要求必须设置spm_enable_plan_capture为STORE模式。

参数类型:布尔型

参数单位:

取值范围

  • on:表示启用查询计划跳变历史记录功能。
  • off:表示关闭查询计划跳变历史记录功能。

默认值on

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:使用SPM相关功能时,若设置为off则参数spm_enable_plan_history_logging_expired_time无效,不会进行跳变历史记录。

spm_enable_plan_history_logging_expired_time

参数说明当SPM感知到baseline中存在的计划时,如果此计划超过一定时间窗未被执行,则认定当前感知的计划属于计划跳变,需要进行历史记录,时间窗的大小由此参数指定。

参数类型:整型

参数单位:s(秒)

取值范围[0, 31536000]

  • 以上取值范围中,[1, 31536000]为有效取值,代表从1秒到31536000秒(365天)。
  • 当设置为0时,代表不进行过期时间判断,当遇到baseline中存在的计划时,直接认定其不会过期,也不会进行跳变历史记录。

默认值900,也即15分钟

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:此值设置过小,可能会导致记录过量历史记录;过大,则会遗漏部分跳变历史记录。

spm_plan_history_reserved_percentage

参数说明由于gs_spm_plan_history表中记录数存在上限,通过该GUC指定百分比,即可指定期望该表可被填充的最大百分比,此值作用的基数为spm_plan_capture_max_plannum。gs_spm_plan_history可保留的最大行数 = spm_plan_capture_max_plannum * spm_plan_history_reserved_percentage%。清理的动作由SPM后台线程每隔24小时触发一次,当关闭spm_enable_baseline_cleanup时,则不进行清理。

参数类型:整型

参数单位:

取值范围[1, 100]

默认值90

设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:此值设置过小,会导致频发触发清理,遗漏历史记录;设置过大,会导致占用磁盘空间增大。