KingbaseES优化器相关全局参数设置
关键字:
配置参数、优化器、数据库性能、人大金仓、KingbaseES
一、摘要
本文分别介绍了KES中与性能相关的若干配置参数。在每个配置参数中,首先介绍参数的功能,然后介绍参数对KingbaseES服务器性能的影响,最后介绍对该参数进行设置的建议。
配置参数
1.1 constraint_exclusion
该参数用于控制查询中约束排除(constraint exclusion)的行为。约束排除是一种优化技术,允许KingbaseES在执行查询时排除不满足约束条件的表或分区,从而减少需要扫描的数据量,提高查询性能。在KingbaseES中有三个取值。
off:禁用约束排除。查询将在素有表和分区 中执行,不考虑约束条件。
on:启用约束排除。查询将根据约束条件排除不符合条件的表和分区。
partition:只在分区表中启动约束排除。查询将只在分区表中的分区中执行。
默认使用partition。目前,约束排除只在通过继承树实现表分区的情况中被默认启用。为所有表启用它会增加额外的规划开销,特别是在简单查询上并且不会产生任何好处。如果没有用传统继承树分区的表时,最好是完全关闭它。
1.2 from_collapse_limit
该参数用于控制查询中的FROM子句合并的行为。当查询中存在多个连续FROM子句时,可以通过合并这些FROM子句来优化查询的执行。默认情况下,该参数的值为8,以为这当查询中有8个或更少的连续FROM子句时,KingbaseES尝试合并这些子句。如果查询中存在超过8个连续的FROM子句,则不会进行合并。
1.3 join_collapse_limit
该参数用于控制查询中的连接合并行为。在KingbaseES中,当查询中存在多个连续的JOIN操作时,可以通过合并这些JOIN操作来优化查询的执行。合并后的JOIN操作可以减少连接操作的数量,从而提高查询性能。默认情况下,参数的值为8,意味着当查询中有8个或更少的连续JOIN操作时,KingbaseES将尝试合并这些操作。如果查询存在超过8个连续的JOIN操作,则不会进行合并。
1.4 parallel_leader_participation
该参数用于控制并行查询中主进程的参与方式。并行查询将一个查询任务分成多个子任务,并在多个工作进程中并行执行这些子任务。其中一个工作进程被选为主进程(leader),负责协调其他工作进程的执行并收集结果。该参数有以下两个取值。
on:主进程参与查询的实际执行,执行一部分工作并返回结果。这是默认值
off:主进程参与查询的实际执行,仅负责协调其他工作进程的执行并收集结果。
1.5 plan_cache_mode
该参数用于控制查询计划缓存的行为模式。查询计划缓存是KingbaseES中一个重要特性,它允许数据库在执行查询时缓存查询的执行计划,以便在将来的相同或相似查询中重用计划,从而提高查询性能。有以下几个取值。
auto:自动模式。这是默认值。在自动模式下,KingbaseES根据查询的复杂度和成本等因素决定是否缓存查询计划。它会尽量缓存那些频繁执行的查询计划,但不会缓存哪些成本较高或复杂度较高的查询计划。
Force_generic_plan:强制使用通用计划模式。在这种模式下,KingbaseES为每个查询生成一个通用的计划,无论查询具体数值如何。这样可以减少计划缓存的大小,但可能会导致某些查询的性能下降。
Force_custom_plan:强制使用定制计划模式。在这种模式下,KingbaseES将会为每个查询生成一个定制的计划,会考虑查询的具体参数值。这样可以提高某些查询的性能,但会增加计划缓存的大小。




