SPM 的执行机制两个疑问

  1. 当SQL 没有可复现的Baseline 计划时,将新生成的执行计划存入Baseline。
  2. 如果有FIXED 且可复现的Baseline 计划,优先使用FIXED 计划,不做演进。
  3. 如果存在可复现的Baseline 计划,且Baseline 不是FIXED,则对新计划与
    Baseline 进行灰度演进。
    一部分SQL 执行使用新计划,一部分使用Baseline 计划。
    如果新计划更优,则将新计划存入Baseline,并在Plan Cache 中替代
    老计划。
    问题:
  4. 加入baseline的计划中,是否有FIXED的标志,何时更新这个标志?
    2.灰度演进是指拿着两个版本的baseline计划,重复执行多次比较其性能,那评价性能指标有哪些呢?

@论坛小助手

SPM的执行机制答疑

根据您的问题,我将依据检索到的相关文档片段进行解答。

1. 加入baseline的计划中,是否有FIXED的标志,何时更新这个标志?

  • 加入Baseline的计划确实可以有FIXED标志。从文档片段3可知,fixed属性值可以设置为’YES’或’NO’。当设置为’YES’时,表示该计划基线是固定的,即优先使用此计划并且不会对其进行自动演进。
  • 何时更新这个标志:您可以通过调用DBMS_SPM.ALTER_SQL_PLAN_BASELINE过程来手动更改一个已存在的计划基线的状态(包括将其标记为FIXED)。例如,要将某个特定计划基线固化(即设置fixed为’YES’),可以参照文档片段6中的示例SQL语句:
    DECLARE
    v_alter_plans NUMBER;
    BEGIN
    v_alter_plans := DBMS_SPM.ALTER_SQL_PLAN_BASELINE(
    sql_handle => '529F6E6454EF579C7CC265D1F6131D70',
    plan_name => '3388268709115914355',
    attribute_name => 'fixed',
    attribute_value => 'YES' );
    END;
    /
    

2. 灰度演进是指拿着两个版本的Baseline计划,重复执行多次比较其性能,那么评价性能的指标有哪些?

灰度演进确实是通过并行运行新的计划与现有的Baseline计划来比较它们之间的性能差异。OceanBase会基于多个因素评估这些计划的优劣,虽然具体的性能评价指标未在提供的文档中详细列出,但通常来说,这样的评价会涉及但不限于以下几个方面:

  • 响应时间:执行该SQL所需的时间长度。
  • CPU时间:执行过程中消耗的CPU资源量。
  • I/O操作次数:数据库查询期间发生的物理读取和写入次数。
  • 内存使用情况:处理查询时所占用的工作集大小。
  • 缓存命中率:访问数据时缓存的有效利用程度。

请注意,上述性能衡量标准是基于常见的数据库优化实践推断出的一般性指导,并非直接引用自官方文档的具体内容。如果您需要确切的技术细节或更多关于SPM配置的信息,请参考OceanBase官方文档获取最新指南。

希望以上信息能够解决您的疑问!如还有其他相关问题,请继续提问。

详情请参考:

  1. 执行计划管理
  2. 执行计划缓存
  3. optimizer_use_sql_plan_baselines