HANA SQL 执行过程
HANA SQL的执行过程与其他关系型数据库大同小异,区别不大,记录如下。
过程如图:
Session
第一层为会话层,新的事务和工作线程在这一层创建。
SQL Frontend
SQL前端层,SQL语句在这一层进行检查和解析。这时SQL语句会被解析成编译器能理解的语句,并进行语法检查。同时也能检查到用户是否有权限执行此语句。这一层会生成语句优化器对象。
SQL Optimizer
语句优化器层处理上一层生成的语句优化器对象,也称作QO树。在这一步首先要做的是基于规则的优化,是优化语句的逻辑算法。可以理解为是HANA预先写好的一套优化逻辑,将会对前端层生成的QO树进行重写,可以修改或添加操作。基于规则的优化之后,是基于成本的枚举优化,用一定数量的样本来估算语句的执行时间。使用参数compile_time_sampling_size控制,默认值为1000。基于成本的枚举优化分为两块,逻辑上的和物理上的。逻辑上考虑QO树的树型,比如FILTER和JOIN操作的位置和先后顺序。物理上考虑某操作的具体实现方法,比如使用哪一种JOIN(Hash Join/Nested Loop Join/Index Join等等)。
Executor
执行层,优化结束之后,就会生成执行计划并分配到不同的执行引擎中。HANA中的执行引擎可以分为行引擎与列引擎。对于某个SQL,使用哪个引擎更快是比较难分析的,因为要整体考虑SQL复杂程度,引擎特性,数据量等诸多因素。
SQL Plan Cache
SQL计划缓存,最主要的作用是减少SQL的编译时间,当相同的SQL语句多次执行时,如果在缓存中已经有记录,将可以跳过准备阶段,直接执行,大大提高响应时间。关于这部分内容可参考其他几篇关于SQL Plan Cache的文章。
post SAP-Garson
原文链接:https://blog.csdn.net/psy7585/article/details/123111625文章来自于网络,如果侵犯了您的权益,请联系站长删除!