SAP HANA性能优化(5)——查询优化器(SQL Optimizer)

本文详细介绍了SAPHANA数据库中的SQL查询主要组件,如会话、SQL前端、优化器、执行计划和SQL计划缓存,以及SQLScript优化器的四种规则:常量传播、存储过程展平、SQL语句内联和控制流简化。通过实例展示了这些规则如何提升查询效率和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SQL查询主要组件

这些组件主要包括会话(Session),SQL前端(SQL Frontend), SQL优化器(SQL Optimizer)和执行计划(Execution Plan)、SQL计划缓存(SQL Plan Cache)。

以下是对这些组件的概述:

会话层(Session):这是处理SQL查询的第一层,类似于API,可以创建具有不同属性的会话。这些会话后续用于创建新的事务和工作线程。

这是查询开始的地方,有点像接待处。当我们使用不同的客户端工作时,会创建具有不同属性的会话,就像不同的工作空间一样。

SQL前端(SQL Frontend):这是SQL语句的解析和检查发生的地方。在这里,语句被转换成编译器可以理解的形式,然后进行语法和语义的检查。如果SQL语句有错误,将会触发错误并导致语句执行失败。

这个环节主要是对我们的查询做初步的检查和理解,就像一个翻译员,确保我们的查询语法正确,语义明确。

查询优化器(SQL Optimizer):这是一个经过语言转换的基础对象,它的主要任务是优化查询,以提升运行速度并保证数据完整性。它首先应用一套逻辑重写规则来改进性能,然后进行成本枚举,以估算不同方案的成本。

这个环节的任务是找出执行查询的最好方式,就像我们的策略规划师,他会考虑多种可能的执行方案,然后选择一个最合适的。

执行器(Execution Plan):优化完成后,会创建执行计划并将其发送到执行引擎。SAP HANA有两种执行引擎,行引擎和列引擎。行引擎是一个通用的处理引擎,列引擎是SAP HANA特有的,以列为单位处理数据。

这个环节就是真正去执行我们的查询,它会根据优化器给出的方案,将任务分配给两种不同的引擎,行引擎和列引擎,来完成实际的工作。

SQL计划缓存(SQL Plan Cache):这是存储查询计划的地方,旨在最小化查询的编译时间。它的底层是监视视图M_SQL_PLAN_CACHE,这是一个大表,主键包括用户、会话、模式、语句等。搜索特定的缓存条目或保证查询有缓存命中,需要输入正确的键值。管理SQL计划缓存需要在缓存存储大小和频繁的缓存命中之间取得平衡。

这是一个存储查询方案的空间,如果我们的查询经常用到,就可以把它存起来,下次就可以直接用,不用再重新计划,就像我们的小秘书一样,帮我们记住了一些常用的东西,方便我们下次直接用。

今天主要聊一聊优化器。

二、SQLScript优化器

SQLScript优化器规则:SAP HANA的SQLScript优化器通常遵循四种规则来提高查询的效率和性能。

常量传播:这个规则关注于评估和折叠常量SQL表达式,并将这个计算出的值通过整个值链进行传播。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值