科技数码吧 关注:954贴子:20,508
  • 0回复贴,共1

内存数据库中,语法解释器模式对代码生成的影响有多大

只看楼主收藏回复

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


我们再了解下RapidsDB的代码生成到底做了什么事情:相对于使用传统解释器的数据库执行模型,RapidsDB嵌入了编译器来生成高效机器代码,从而实现更底层的优化,这个过程不是常规的语法解释器可以实现的。在默认情况下,查询语句会首先被解释,再经过后台异步编译以便在以后的执行中使用。这种方法加速了长时间的复杂查询的执行时间,同时为以后的使用提供了高效的查询计划。
RapidsDB在首次处理某个查询语句时,会异步优化并编译查询以备后用。这带来了最小的开销,这与需要处理的数据量大小无关,而是与查询的复杂程度相关。
代码生成过程包括从查询中提取参数,然后将规范化的查询转换为系统定制的数据库中间表示方式。具有相同语法结构的后续请求就可以重用该计划,以便达到优化的效果。代码生成适用于所有数据操作语言(DML)查询。例如,RapidsDB在CREATE TABLE和ALTER TABLE语句期间生产代码。这些数据定义语言(DDL)产生的编译代码,就可减少类似DML查询的执行时间。


1楼2022-07-29 06:58回复