ITPub博客

首页 > 数据库 > 国内数据库 > 「分布式技术专题」三种常见的数据库查询引擎执行模型

「分布式技术专题」三种常见的数据库查询引擎执行模型

原创 国内数据库 作者:天云数据 时间:2021-02-07 17:10:45 0 删除 编辑

一、迭代模型/火山模型(Iterator Model)

又称 Volcano Model 或者 Pipeline Model。

在这里插入图片描述

Iterator Model

该计算模型将关系代数中每一种操作抽象为一个 Operator,将整个 SQL 构建成一个 Operator 树,查询树自顶向下的调用next()接口,数据则自底向上的被拉取处理。

火山模型的这种处理方式也称为拉取执行模型(Pull Based)。

大多数关系型数据库都是使用迭代模型的,如 SQLite、MongoDB、Impala、DB2、SQLServer、Greenplum、PostgreSQL、Oracle、MySQL 等。

火山模型的优点在于:简单,每个 Operator 可以单独实现逻辑。

火山模型的缺点:查询树调用next()接口次数太多,并且一次只取一条数据,CPU 执行效率低;而 Joins, Subqueries, Order By 等操作经常会阻塞。


二、物化模型(Materialization Model)

在这里插入图片描述

Materialization Model

物化模型的处理方式是:每个 operator 一次处理所有的输入,处理完之后将所有结果一次性输出。

物化模型更适合OLTP负载,这些查询每次只访问小规模的数据,只需要少量的函数调用。


三、向量化/批处理模型(Vectorized / Batch Model)

在这里插入图片描述

Batch Model

向量化模型和火山模型 类似,每个operator需要实现一个next() 函数,但是每次调用next() 函数会返回一批的元组(tuples),而不是一个元组,所以向量化模型也可称为批处理模型。

向量化模型是火山模型和物化模型的折衷。

向量化模型比较适合 OLAP 查询,因为其大大减少了每个operator的调用次数,也就简单减少了虚函数的调用。

Presto、snowflake、SQLServer、Amazon Redshift等数据库支持这种处理模式。

Spark 2.x 的 SQL 引擎开始也支持向量化执行模型。

在 Hive 中使用 向量化执行的方式:

  1. 必须以  ORC 格式来存储数据,
  2. 将 hive.vectorized.execution.enabled 参数设置为  true
以上为三种常见的数据库查询引擎执行模型, 「分布式技术专题」是国产数据库hubble团队精心整编,专题会持续更新,欢迎大家保持关注。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982626/viewspace-2756672/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
天云数据,一家大数据及人工智能基础软件提供商。

注册时间:2020-08-26

  • 博文量
    34
  • 访问量
    35967