openGauss vacuum analyze代码走读


vacuum、analyze在很多流程上是公用的,主要是analyze用了vacuum的很多流程,包括语法树主要结构体VacuumStmt,主要流程操作函数vacuum()等。


vacuum、analyze可以手动以SQL的形式触发,也可以通过autovacuum、autoanalyze进行自动触发。


触发流程入口

SQL语句触发主要流程

      语法分析中创建出结构体VacuumStmt。
     
      语义分析直接按照功能性语句挂到Query树中。
     
      功能性语句走ProcessUtility执行器,进入主函数:
      DoVacuumMppTable() {
          解析SQL语句, 校验一些权限啥的,之后调了do_vacuum_mpp_table_other_node:
              delta merge:begin_delta_merge()
                verify: DoVerifyTableOtherNode
           
               主要操作:vacuum()  
      }
    <br>