即时编译助力人大金仓KES分析能力飞跃

随着数字技术向各行各业的不断渗透,金融、能源、电信等行业逐渐进入深水区,面对核心系统的不断升级升级,这些系统不仅要满足在线交易系统运行的高实时性要求。他们必须确保他们拥有有效的分析能力,以支持客户的业务决策。由于数据库中的SQL表达式和PLSQL代码都是用通用逻辑实现的,在语句执行过程中会形成大量不必要的逻辑跳转和代码分支遍历,从而导致底层指令的执行呈指数级增长,给CPU带…

随着数字技术向各行各业的不断渗透,金融、能源、电信等行业逐渐进入深水区,面对核心系统的不断升级升级,这些系统不仅要满足在线交易系统运行的高实时性要求。他们必须确保他们拥有有效的分析能力,以支持客户的业务决策。由于数据库中的SQL表达式和PL SQL代码都是用通用逻辑实现的,在语句执行过程中会形成大量不必要的逻辑跳转和代码分支遍历,从而导致底层指令的执行呈指数级增长,给CPU带来不必要的压力。这种性能损失在复杂的分析类计算场景中尤为严重。为了解决这种低效的性能损失,KES使用了即时编译技术来简化代码。简单地说,直接调用相应的函数,在已知输入条件下简化代码逻辑分支,大大降低了分析场景复杂计算中CPU单位负载压力,有效地提高了整个数据库的性能。在我们讨论JIT之前,让我们先了解一下什么是编译器。编译器是将高级语言源代码转换为机器代码(或比原始程序更低级的代码)的程序。从“代码”到“代码”:

转换后的代码:计算机可以直接执行的机器代码(本机代码);中间语言代码比原始程序低。在过去,程序通常有两种编译模式:静态编译和动态文字,但现在我们有即时编译模式。Ahead-of-Time AOT编译静态编译在运行应用程序之前预编译应用程序的编译。一个典型的例子:C-将源代码.c转换为机器代码的本地代码。- 创建binary file;

解释器解释器-一个程序,它执行源代码和中间表达式,并按顺序解释它们,这些代码是用动态翻译编程语言编写的。一个典型的例子:JAVA-JVM-代码在“解释的同时执行”;-它的优点是不需要预编译,程序不依赖于特定的体系结构。- 缺点是操作性能低。即时编译:在软件运行过程中编译代码以提高执行速度的编译器。JAVA-将经常在运行时执行的方法编译成机器代码。

Python + Numba-在运行时编译指定的函数并执行它。即时JIT编译集成了前两种编译方法,在一句话中编译和运行源代码,并缓存编译后的代码以减少性能损失。与静态编译相反,即时编译代码可以处理延迟绑定并增加安全性。简单地说,JIT是提高程序效率的一种方法。如何实现基于LLVM的JIT功能。

KES将相应的JIT提供者封装在依赖库中,以避免JIT入侵内核代码。用户可以根据需要打开或关闭JIT功能。通过进一步抽象,KES还提供了支持不同JIT后期扩展的解决方案。其实现过程的概要如下:1.将公式的(Expr)转换为L(LIR);2.通过LVMM进行JIT编译和转换为机器代码;KES Executive作为内部函数调用执行。

基于JIT提供的优化项1,KES将表达式路径编译为实时的具体代码执行,用于表达式计算优化WHERE 条件判断、聚合运算等场景,并在此过程中优化大量不必要的调用和分支跳转。访问层优化数据库执行器可以通过访问层加载数据,并为特定的表结构自定义元组读取和分析代码。例如,在解析元组的流程中,根据表结构动态生成的代码不需要重复数据类型,只需按照顺序解析数据即可。它还减少了计算和I/O开销,方法是在获取子列时根据相应的偏移量直接提取数据,并跳过不需要的列。随着处理数据量的增加,计算和I/O的节省将是惊人的。LLVM优化了生成的中间表示代码(IR),在一定程度上提高了数据库查询的执行速度。从每一行数据的处理优化到整个SQL的处理流优化:从传统相对低效的流水线执行模式调整到循环批处理模式,充分利用CPU缓存,避免从相对较慢的内存中访问数据。与CPU矢量计算相关的指令集相结合,进一步提高了性能。JIT提高了CPU密集型查询的性能,如果短查询的优化有限,KES默认情况下会打开动态编译(JIT),运行时会比较查询评估成本和JIT成本阈值的大小,以确定是否执行JIT编译。您还可以根据业务需求设置JIT参数来关闭动态编译。JIT优化性能测量下面显示了由于客户业务分析场景的脱敏而提高的SQL执行性能。

Explan ANALYZE的结果:

JIT有助于优化KES数据库的SQL执行逻辑,提高复杂SQL的查询速度,并提高KES的整体性能。在TPC-H等数据库测试中,KES JIT编译表达式的执行速度快了20%以上。在JIT模式下,索引创建速度通常会提高5%到19%。作为中国最早、最深入的数据库国家团队,人民代表始终以用户为中心,致力于提供优秀的数据库产品和服务。金仓人在广泛关注和学习前沿技术的同时,将坚持自主创新,不断落地新理论,整合新技术,以满足日益多样化和极端的新需求,提高产品核心竞争力,不断加强千家行业的数字化转型升级。

作者: 网站小编

随着数字技术向各行各业的不断渗透,金融、能源、电信等行业逐渐进入深水区,面对核心系统的不断升级升级,这些系统不仅要满足在线交易系统运行的高实时性要求。他们必须确保他们拥有有效的分析能力,以支持客户的业务决策。由于数据库中的SQL表达式和PLSQL代码都是用通用逻辑实现的,在语句执行过程中会形成大量不必要的逻辑跳转和代码分支遍历,从而导致底层指令的执行呈指数级增长,给CPU带

为您推荐