深入浅出话DB|柏睿数据RapidsDB高性能解密之代码生成

2022-06-22 12:24:16     来源:财报网

 

文接上回,我们一起由浅入深地了解了柏睿数据分布式内存数据库RapidsDB在数据存储方面的多种优化方式。根据软件基本方法:程序 = 数据结构 + 算法,本章内容就为大家介绍RapidsDB是如何使用优化算法提升查询性能的。

■首先,我们需要了解RapidsDB的代码生成到底做了什么事情

相对于使用传统解释器的数据库执行模型,RapidsDB嵌入了编译器来生成高效机器代码,从而实现更底层的优化,这个过程不是常规的语法解释器可以实现的。在默认情况下,查询语句会首先被解释,再经过后台异步编译以便在以后的执行中使用。这种方法加速了长时间的复杂查询的执行时间,同时为以后的使用提供了高效的查询计划。

如上所述,RapidsDB在首次处理某个查询语句时,会异步优化并编译查询以备后用。这带来了最小的开销,这与需要处理的数据量大小无关,而是与查询的复杂程度相关。代码生成过程包括从查询中提取参数,然后将规范化的查询转换为系统定制的数据库中间表示方式。具有相同语法结构的后续请求就可以重用该计划,以便达到优化的效果。

代码生成适用于所有数据操作语言(DML)查询。例如,RapidsDB在CREATE TABLE和ALTER TABLE语句期间生产代码。这些数据定义语言(DDL)产生的编译代码,就可减少类似DML查询的执行时间。

■其次,我们需要了解语法解释器模式对代码生成的影响有多大

在本节中,会介绍当RapidsDB遇到新的查询语法结构时,是如何进行工作的。

●当解释器模式interpreter_mode被设置为编译compile时:

在这种模式下,RapidsDB会在首次遇到查询的时候编译查询语句。如下例所示,查询SELECT * FROM t WHERE col = 1;本次运行需要更长时间才能完成。

上面例子是在初次中编译开销的结果。注意下面例子中,在第二个和第三个查询,WHERE子句是不同的,但是两个查询语句的结构是相同的。因此,RapidsDB重用第二个查询的计划来运行了第三个查询。

●当解释器模式interpreter_mode被设置为解释优先interpret_first:

在这种模式下,当首次遇到某查询时,RapidsDB会并行解释和编译查询。查询以解释模式运行,直到查询形状的编译完成。下面例子中,第一个查询SELECT * FROM t WHERE col = 1;的查询速度会比前面示例中的第一个查询速度更快。

最后,我们一起初探代码生成的实现方法

●代码生成的架构

代码生成使用专门的编程语言MPL,选用这门语言的原因是使用简单、管理严密。SQL操作符树将会被直接转化为抽象语法树,以化解在查询编译时对昂贵的解析和语义解析的需求。

除了语言的简单性以外,其还受益于将许多关系操作作为原语公开,如“索引查找”和标量操作,如“BIGINT加法”。这些操作符是与服务器一起静态编译的,可以很容易地组合成查询。这样,许多编译工作就可以提前完成。

●数据库字节编码

编译查询时,RapidsDB首先将MPL展开成紧凑的格式,也可以称为RapidsDB字节码(MBC)。这种格式的执行计划可以轻易的进行序列化、解释或转换为LLVM位代码,以便编译成x86_64机器代码。这种直接解释字节码基本消除了第一次运行查询的成本,但会影响查询执行的性能:

在这个例子中,第一个请求没有额外的延迟产生,因为该查询被解释了。

上面例子的第一个请求的额外延迟是代码生成的结果。但是,后续的请求速度是上门解释执行的速度的两倍。

回看我们的项目实例,在国有大行普惠金融项目应用中,50%左右的查询是结构重复的查询,而RapidsDB依托代码生成的优化特性降低了50%-80%的查询时间,获得很好的使用体验。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。

标签:

猜你喜欢

深入浅出话DB|柏睿数据RapidsDB高性能解密之代码生成
省属国企广轻集团工美港超强IP“兔爷”将空降黑洞谜塔Meta
上海市市长龚正 为东芝电梯颁发“跨国公司研发中心”证书
倍思氮化镓桌面快充充电器65W让充电化繁为简
喜讯!深圳市电子商务协会与河源市电子商务联合会签署战略合作协议,打造共商、共建、共享的合作新机制
不为自我设限 海兰A700电竞一体机全新升级
了解汽车保险种类,购买太平洋汽车保险的主要原因
热烈祝贺中国人保PICC为北正生物细胞系列产品承保!
FITZCARL菲思卡尔打造更专业橱柜品牌魅力丨欧派橱柜
弘扬美业正能量|逆风中飞翔的美中生物
微资讯!sek是什么货币?瑞典(Sweden)外贸市场知识清单
微资讯!影响需求弹性的因素有哪些?需求弹性有什么作用?
头条:铺底流动资金 铺底流动资金与流动资金有什么区别?
快消息!ea7是什么品牌?ea7什么档次?
每日时讯!榕树贷款怎么样?靠谱吗?后期上征信吗?
热推荐:理财产品净值型是什么意思?净值型理财产品和基金有何差异?
简讯:资本利得税是什么意思?资本利得税和股利所得税有何区别?
热门:什么是股票注册制?股票注册制的优势及影响是什么?
快看:单位净值是什么意思?单位净值和单位累计净值有什么区别?
每日短讯:富时a50指数什么意思?富时a50指数如何交易?
即时:早晨之星是什么意思?早晨之星有哪些用法?
陶瓷隔热涂料种类和应用
市场复苏助力行业破冰,喆啡酒店再迎发展新征
趣链科技BaaS平台区块链应用遍地开花 服务市场规模达亿万级
新宏昌蒋晓冬:品创为马 不负韶华
唐山同海净化董林:送来一缕环保之风
思屋电气郑松猛:做一份有温度的事业
广西鑫赞李少鹏:一木一石一匠心
2022年特别推荐艺术家:喻寿奇绘画艺术
背部的白癜风都有什么症状表现