openGauss学习笔记-52 openGauss 高级特性-LLVM

文章目录

    • openGauss学习笔记-52 openGauss 高级特性-LLVM
      • 52.1 适用场景
      • 52.2 非适用场景
      • 52.3 其他因素对LLVM性能的影响
      • 52.4 LLVM使用建议

openGauss学习笔记-52 openGauss 高级特性-LLVM

openGauss借助LLVM(Low Level Virtual Machine)提供的库函数,依据查询执行计划树,将原本在执行器阶段才会确定查询实际执行路径的过程提前到执行初始化阶段,从而规避原本查询执行时候伴随的函数调用、逻辑条件分支判断以及大量的数据读取等问题,以达到提升查询性能的目的。

LLVM动态编译技术可以为每个查询生成定制化的机器码用于替换原本的通用函数。通过减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能的目的。

由于LLVM需要消耗额外的时间预生成IR中间态表示并编译成机器码,因此在小数据量场景或查询本身耗时较少时,可能引起性能的劣化。

52.1 适用场景

  • 支持LLVM的表达式

    查询语句中存在以下的表达式支持LLVM优化:

    1. Case…when… 表达式
    2. In表达式
    3. Bool表达式
      • And
      • Or
      • Not
    4. BooleanTest表达式
      • IS_NOT_UNKNOWN:对应SQL语句IS NOT UNKNOWN
      • IS_UNKNOWN:对应SQL语句IS UNKNOWN
      • IS_TRUE:对应SQL语句IS TRUE
      • IS_NOT_TRUE:对应SQL语句IS NOT TRUE
      • IS_FALSE:对应SQL语句IS FALSE
      • IS_NOT_FALSE:对应SQL语句IS NOT FALSE
    5. NullTest表达式
      • IS_NOT_NULL
      • IS_NULL
    6. Operator表达式
    7. Function表达式
      • lpad
      • substring
      • btrim
      • rtrim
      • length
    8. 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的算子:

    1. Join :HashJoin
    2. Agg :HashAgg
    3. 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工具进行显示。

52.2 非适用场景

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

52.3 其他因素对LLVM性能的影响

LLVM优化效果不仅依赖于数据库内部具体的实现,还与当前所选择的硬件环境等有关。

  • 表达式调用C-函数个数

    数据库内部针对表达式计算并未实现全codegen,即在整个表达式计算中部分表达式实现了codegen,部分直接调用原本的C代码。如果整个表达式计算中后者占据了主要部分,使用LLVM动态编译优化,可能会导致性能劣化。通过设置log_min_message的级别为DEBUG1可以查看到哪些表达式直接调用了C代码实现。

  • 内存资源

    LLVM特性的一个重要思想是保障数据的局域特性,即数据应尽可能的存放在寄存器中。同时应减少数据加载,因此在使用LLVM优化时应设置足够大的work_mem,保证对应使用LLVM优化的执行代码整个过程在内存中实现,否则可能引起性能劣化。

  • 优化器代价估算

    LLVM特性实现了简易的代价估算模型,即依据当前参与节点运算的表大小决定当前节点是否考虑使用LLVM动态编译优化。如果优化器低估了实际参与运算的行数,则原本可获得收益的未正常获得收益。反之亦然。

52.4 LLVM使用建议

目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下:

  1. 设置合理的work_mem,在允许的条件下尽可能设置较大的work_mem,如果出现大量下盘,则建议关闭LLVM动态编译优化(通过设置enable_codegen=off实现)。

  2. 设置合理的codegen_cost_threshold(默认值为10000),确保小数据量场景下避免使用LLVM动态编译优化。当codegen_cost_threshold的值设定后,因使用LLVM动态编译优化引入性能劣化,则建议增加codegen_cost_threshold的取值。

  3. 对于表达式计算使用LLVM动态编译优化,如果存在大量的调用C-函数的场景,建议关闭LLVM动态编译优化。

    img 说明: 在资源许可的情况下,数据量越大,可获得的性能提升效果越好。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1617939.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

vue2 自定义指令,插槽

一、学习目标 1.自定义指令 基本语法(全局、局部注册)指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 二、自定义指令 1.指令介绍 内置指令:v-html、v-if、v-bind、v-on… 这都是Vue给咱们内置的一些指令,…

Java“牵手”天猫商品快递费用API接口数据,天猫API接口申请指南

天猫平台商品快递费用接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取天猫商品的标题、价格、库存、商品快递费用,宝贝ID,发货地,区域ID,快递费用,月销量、总销量、库存、详情…

freenom php,Freenom免费域名.TK、.CF、.ML、.GA注册及使用方法

去年,Freenom网站来了个大改版,不仅网站页面进行了大幅度调整,更重要的是Freenom这次终于统一了.TK、.CF、.ML、.GA这四个免费域名账号的后台登录,原先.TK、.CF、.ML、.GA都有各自独立的账号系统,现在全部统一使用Freenom的后台账号管理系统。 改版后的Freenom实际上整合了…

<七> objectARX开发:创建自定义实体

1、介绍 在某些情况下,CAD中的实体对象无法满足需求,我们需要针对实际情况来设计并绘制自定义的实体,下面就用一个简单的例子来介绍一下自定义实体绘制。 实体形状:包括实体夹点和文字夹点拖动实现。 2、效果 3、创建自定义实体的步骤 新建一个从AcDbEntity继承的类,如C…

穷建站(二):在DnsPod中为申请的tk域名进行域名解析

文章目录 1 序2 DnsPod域名解析2.1 DnsPod网站账号注册2.2 在DnsPod中添加需要解析的域名 3 在Freenom中进行域名解析配置 1 序 在上一篇博文中:穷建站(一):申请免费的tk顶级域名 博文中已经成功的申请了一个tk顶级域名&#xff…

最容易申请到的免费顶级域名.tk

TK与COM、NET、CN、TV一样同属顶级域名、是小国家域名、也是网络上最容易申请到的免费域名之一。 Dot TK网站提供免费和收费两种域名:免费域名必须保证在90天内有25次访问,否则将域名给收回。 免费注册的用户仅有其域名的使用权。只要您每九十天在您的域名名称里有活动一次,…

关于申请个人域名和虚拟主机---个人域名篇(.tk顶级域名)

本文介绍国外免费域名.tk的注册和部分使用,顶级域名哦 从这里注册.tk,打开后会是这个样子 填一个你想申请的域名,这里我填的测试域名是wokanxing.tk 填完后 go 当然可以用自己的DNS解析..但是我没有..而且主机屋的貌似不支持.tk的解析.最近我在问客服,等有进展再告诉大家 当…

TK域名首次注册教程(咸干花生)

http://wenku.baidu.com/link?urlrvRbl9BWNOSKnNffHy-u0TK9lJfZifPSnHdARGhT8oVuKaxU0fPX-QyEcH43KFinmJztbvEIRVabYw8sxK_5TEI6r2EGhsmORwSKVVKq0u_ http://wenku.baidu.com/link?urljUE7rnWFsm4UZ-58RckyFx63Vy7xNstOrfSXP12RKGIx57zOEcpOnH3rpIituAppG1YzYE-3-OhDN5jismEy…

穷建站(一):申请免费的tk顶级域名

文章目录 1 序2 注册免费的tk顶级域名 1 序 建一个个人网站我相信是很多人从初中甚至是高中开始就想做的一件事情,起码我是这样的。 在初中的时候第一次上网,我就很好奇网站到底是怎么建起来的,我们又是如何通过互联网去访问到我们的站点并成…

TK免费顶级域名注册申请和使用:域名DNS解析设置和绑定空间

TK域名算是目前唯一一个可以注册和使用的免费顶级域名了,在国内使用的人数非常多,用TK域名搭建的网站也是不可计数,和CO.CC域名一样,TK域名网站提供了多国语言,包括了简体中文在内,使用简单方便。 之前也介…

怎么注册tk域名_关于注册免费TK域名不成功的几个问题解决方案

网友热度 14,151 ℃ - 1条评论 看到老左Q群里不少的新手站长在讨论.TK免费域名注册不成功的问题,我本以为是之前的"免费.TK域名注册详细图文教程"可能会因为限制,甚至是教程界面的变化我们不好注册使用。因为在之前的同类.CF和.ML域名也是这套…

未注册TK域名批量搜索器

TK域名是免费顶级域名,和CN域名性质一样,现在除了支持转发外,已经可以设置A、CNAME、MX记录和修改DNS服务器!现在很稳定而且还有许多4字母的域名可以注册,可是上网页只能一个一个查,真是太慢,想…

UG NX 12 类选择器

在NX建模中,经常会面临选择操作对象的问题,有时使用鼠标在图形窗口中直接选择对象会比较困难,还会容易产生误选择的现象。NX为了提高选择操作的效率,专门提供了类选择器(“类选择”对话框),以在…

UG NX 12 抽取面特征

抽取体可用来创建所选取特征的关联副本。抽取体操作的对象包括面、面区域和体。如果抽取一条曲线,则创建的是曲线特征;如果抽取一个面或一个区域,则创建一个片体;如果抽取一个体,则新体的类型将与原先的体相同&#xf…

UG NX 12 布尔运算

布尔操作可以对两个或两个以上已经存在的实体进行求和、求差及求交运算(注意:编辑拉伸、旋转、变化的扫掠特征时,用户可以直接进行布尔运算操作),可以将原先存在的多个独立的实体进行运算以产生新的实体。进行布尔运算…

NXOpen相关

网上文档 可以搜索GTAC,进入相应版本的NX Documentation. 其中Product area下面的Programming Tools包含了NXOpen开发相关的信息。如要本地查看需要下载。 进入NX Open模块。进入Open for C/C: Open C Reference Guide 内部包含了C语言API。包括各种调用NX模块的函…

UG NX二次开发-外部模式

NX二次开发外部模式(.exe)制作设置 UG/Open API 函数能在两种不同的环境下运行,根据编译链接情况的不同,UG/Open API 二次开发程序又具有两种形式: a、外部式(External):此时UG/Open API程序可以脱离UG环境,在操作系统下单独运行,或者作为UG的一个子进程独立运行。 特…

Jetson NX性能介绍

NX的各个工作模式及功耗: 与其他jetson系列板卡的对比

Jetson-Xavier-NX使用教程(这里说插上烧好镜像的SD卡上电就可以直接用了)

这里说插上烧好镜像的SD卡上电就可以直接用了,似乎是不需要特意更改或者设置什么的。 转载自:https://mp.weixin.qq.com/s/Lhm9FFctl7BShdnBwmCV4w Jetson-Xavier-NX使用教程 原创 lance 计算机视觉算法工程师 2月18日 1.介绍 microSD卡插槽用于主存…

JETSON XAVIER NX 入门教程(一)入手刷机过程

转载自:https://mp.weixin.qq.com/s/9HFZaP3A4cslJpuU5AqmGQ JETSON XAVIER NX 入门教程(一)入手刷机过程 原创 CXY 北理玄驹合作小组 5月13日 一、Jetson Xavier NX 简介 NVIDIA Jetson Xavier™ NX是体型超小的AI超级计算机&#xf…