这是一个创建于 1108 天前的主题,其中的信息可能已经有所发展或是发生改变。
一、查询执行流程
用户通过 JDBC/ODBC 提交查询之后,查询解析器解析查询得到查询树,然后优化器根据查询树生成查询计划,派遣器和资源管理器交互得到资源,分解查询计划,然后派遣计划到 Segment 的执行器上面执行。最终结果会传回给用户。
二、弹性调度执行
弹性执行引擎有几个关键设计点:存储和计算的完全分离,无状态 Segment 以及如何使用资源。存储和计算的分离使得我们可以动态的启动任意多个虚拟 Segment 来执行查询。无状态 Segment 使得集群更容易扩展。要想保证大规模集群的状态一致性是比较困难的问题,所以我们采用了无状态的 Segment 。如何使用资源包括如何根据查询的代价申请多少资源,如何有效的使用这些资源以及如何使得数据局部性最优。OushuDB 内部针对每一个部分都进行了优化的设计。
三、极速执行器
执行器是数据库最核心的部件之一,Oushu Database 对执行器进行了完全重新设计,充分利用了最新 CPU 的每一个特性,比如 SIMD 指令等,可以做到性能的极致。