暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A LLVM适用场景与限制

墨天轮 2019-10-12
795

LLVM适用场景与限制

适用场景

  • 支持LLVM的表达式
    查询语句中存在以下的表达式支持LLVM优化:
    • Case…when… 表达式
    • In表达式
    • Bool表达式 (And/Or/Not)
    • BooleanTest表达式 (IS_NOT_KNOWN/IS_UNKNOWN/IS_TRUE/IS_NOT_TRUE/IS_FALSE/IS_NOT_FALSE)
    • NullTest表达式 (IS_NOT_NULL/IS_NULL)
    • Operator表达式
    • Function表达式 (lpad, substring, btrim, rtrim, length)
    • Nullif表达式

    表达式计算支持的数据类型包括bool, tinyint, smallint, int, bigint, float4, float8, numeric, date, time, timetz, timestamp, timestamptz, interval, bpchar, varchar, text, oid。

    仅当表达式出现在向量化执行引擎中Scan节点的filter、Hash Join节点中的complicate hash condition、hash join filter、hash join target, Nested Loop节点中的filter、join filter, Merge Join节点的merge join filter, merge join target, Group节点中的filter表达式时,才会考虑是否使用LLVM动态编译优化。

  • 支持LLVM的算子:
    • Join :HashJoin
    • Agg :HashAgg
    • Sort

    其中HashJoin算子仅支持Hash Inner Join,对应的hash cond仅支持int4、bigint、bpchar类型的比较;HashAgg算子仅支持针对bigint、numeric类型的sum及avg操作,且group by语句仅支持int4、bigint、bpchar,text,varchar,timestamp类型操作,同时支持count(*)聚集操作。Sort算子仅支持对int4,bigint,numeric,bpchar,text,varchar数据类型的比较操作。除此之外,无法使用LLVM动态编译优化,具体可通过explain performance工具进行显示。

非适用场景

  • 不支持CN上LLVM动态编译优化。
  • 不支持小数据量表使用LLVM动态编译优化。
  • 不支持生成非向量化执行路径的查询作业

查看更多:华为GaussDB 200 配置LLVM
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论