「分布式技术专题」三种常见的数据库查询引擎执行模型
注: 本文涉及到的相关资料图片摘自 CARNEGIE MELLON DATABASE GROUP 发表的 CMU SCS 15-721 (Spring 2019) :: Query Execution & Processing (点击可查看) 1. 迭代模型/火山模型(Iterator Model) 又称 Volcano Model 或者 Pipeline Model 。 该计算模型将关系代数中每一种操作抽象为一个 Operator,将整个 SQL 构建成一个 Operator 树,查询树自顶向下的调用next()接口,数据则自底向上的被拉取处理。 火山模型的这种处理方式也称为拉取执行模型(Pull Based)。 大多数关系型数据库都是使用迭代模型的,如 SQLite、MongoDB、Impala、DB2、SQLServer、Greenplum、PostgreSQL、Oracle、MySQL 等。 火山模型的优点在于:简单,每个 Operator 可以单独实现逻辑。 火山模型的缺点:查询树调用 next() 接口次数太多,并且一次只取一条数据,CPU 执行效率低;而 Joins, Subqueries, Order By 等操作经常会阻塞。 2. 物化模型(Materialization Model) 物化模型的处理方式是:每个 operator 一次处理所有的输入