关于执行计划的问题1

oceanbase数据库中物理执行计划和逻辑执行计划的主要区别和获取方式是什么?

@论坛小助手

在 OceanBase 数据库中,物理执行计划和逻辑执行计划的主要区别在于它们描述的是 SQL 语句的不同层面的执行细节:

  1. 逻辑执行计划

    • 逻辑执行计划主要描述了 SQL 语句的高级执行策略,包括如何选择数据、如何连接表等。它不涉及具体的执行细节,例如数据存储位置或网络传输等。
    • 用户可以通过 EXPLAIN 命令查看逻辑执行计划,例如:
      EXPLAIN SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1 AND t1.c1 > 10;
      
  2. 物理执行计划

    • 物理执行计划则描述了 SQL 语句的具体执行步骤,包括数据的实际存储位置、网络传输、并行执行等详细信息。
    • 用户可以通过查询 (G)V$OB_PLAN_CACHE_PLAN_EXPLAIN 视图来获取物理执行计划,例如:
      SELECT * FROM GV$OB_PLAN_CACHE_PLAN_EXPLAIN WHERE sql_id = 'your_sql_id';
      
    • 此外,GV$SQL_PLAN_MONITOR 视图也可以提供租户级的执行计划相关信息,例如:
      SELECT * FROM GV$SQL_PLAN_MONITOR WHERE sql_id = 'your_sql_id';
      

通过对比逻辑执行计划和物理执行计划,可以更好地理解和优化 SQL 语句的执行性能。

具体信息可参考以下文档:

  1. 实时执行计划展示
  2. 阅读和管理 OceanBase 数据库 SQL 执行计划
2 个赞

说白了,逻辑执行计划是根据统计信息生成的执行计划,并没有真正执行,而物理计划就是生成并且真正运行过的计划。

1 个赞