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>