获取小型查询的查询计划状态

存储在 执行_引擎_配置文件 系统表中的实时分析计数器可用于当前执行的所有语句,包括 合并等内部操作。

如果满足以下任一条件,则可以在查询执行完成后使用分析计数器:

  • 查询是通过 PROFILE 命令运行的

  • Vertica 元函数 ENABLE_PROFILING 启用了系统范围的分析。

  • 查询运行了两秒以上。

分析计数器保存在 EXECUTION_ENGINE_PROFILES 系统表中,直至超出存储配额。

例如:

  1. 分析查询以从 EXECUTION_ENGINE_PROFILES 获取 transaction_idstatement_id。例如:

    => PROFILE SELECT * FROM t1 JOIN t2 ON t1.x = t2.y;
    NOTICE 4788:  Statement is being profiled
    HINT:  Select * from v_monitor.execution_engine_profiles where transaction_id=45035996273955065 and statement_id=4;
    NOTICE 3557:  Initiator memory for query: [on pool general: 248544 KB, minimum: 248544 KB]
    NOTICE 5077:  Total memory required by query: [248544 KB]
     x | y |   z
    ---+---+-------
     3 | 3 | three
    (1 row)
    
  2. 查询系统表 QUERY_PLAN_PROFILES

    => SELECT ... FROM query_plan_profiles
         WHERE transaction_id=45035996273955065 and statement_id=4;
         ORDER BY transaction_id, statement_id, path_id, path_line_index;