当前位置: 首页 > news >正文

SAP HANA Scale-out 04:CalculationView优化

CV执行过程

  • 计算视图激活时,生成Stored Model
  • SELECT查询时:
    • 首先将Stored Model实例化为runtime Model 
    • 计算引擎执行优化,将runtime Model转换为Optimized Runtime Model
    • Optimized Runtime Model通过SQL Optimizer进行优化

计算引擎优化

特性说明
Join cardinality
指定Join的连接基数
有可能实现Join剪枝,提高性能并减少临时内存消耗
Optimized join columns
优化连接列
允许优化连接列,减少Join节点后需处理的数据量
Dynamic joins
动态连接
动态减少Join字段,减少Join节点处理数据量
Union Node Pruning
Union剪枝
允许Union数据源剪枝,提升性能
column pruning
列剪枝
计算视图固有特性,引擎会在前期移除任何对结果不需要的字段

计算引擎优化

设置Join基数

出现Join剪枝前提:

  • SELECT字段不在要剪掉的表中
  • Join类型是外连接、引用连接、文本连接
  • 要剪掉的表的Joina基数是1

优化连接字段

连接字段前枝前提:

  • The join field is not requested by the query.
  • Only fields from one of the join partners are requested by the query.
  • The join is either an outer join, referential join, or text join.
  • The cardinality to the join partner from which none of the fields are requested is set to 1.

设置动态连接

  • 执行时Join时,连接列不是视图定义时的所有连接列,而是仅需要的连接列(连接条件是动态的)
  • 动态连接与静态连接执行的结果可能不一致,在使用前需明确其影响
  • 设置动态连接SELECT查询时,必须要用到至少一个连接字段,否则会报执行时错误

Union节点剪枝

  • Constant mapping
  • Pruning configuration table

使用Hints

在语句层面配置
SELECT * FROM CV1 WITH HINT(NO_CALC_VIEW_UNFOLDING);
在CV层面配置

名称使用场景
query_level_sql_hints 逗号分隔的hint仅对unfolding的视图有效,若未展开,这些hint不起作用
qo_pop_hints 逗号分隔的hint仅对未展开且设置了在SQL引擎中执行的视图才有效,hint仅对SQL引擎能优化的部分生效
no_calc_view_unfolding 1用于阻止视图展开
sql_opt_hintsCALC_VIEW_UNFOLDING在全局禁止视图展开的使用

说明

  • Hint名称必须小写
  • hints必须在最上层计算视图上设置
  • 通过视图M_CE_CALCSCENARIO_HINTS监控CV上的HINT设置

Execute in SQL Engine

无特殊配置情况下

配置Execute in SQL Engine

怎么确定Query是否展开

通过 Explain Plan功能,如果计划内是具体的实体表,则视图是展开的

若计划内是计算视图,则没有展开

Static Cache

使用静态缓存前提:

  • 视图配置Enable Cache选项
  • 视图可以展开
  • 视图没有granularity-tracking calculations
  • 查询要求使用static cache,即HINT(RESULT_CACHE)

静态缓存监控:M_RESULT_CACHE、RESULT_CACHE、RESULT_CACHE_COLUMNS

视图检查监控

CHECK_ANALYTICAL_MODEL ('<action>', '<schema_name>', '<object_name>',
<return_object>)

性能相关建议

建议:

  • 设置Join基数
  • 优化Join连接字段
  • scale-out场景Join字段是分区字段

不建议:

  • Join字段是计算列
  • 在计算列上进行数据过滤
  • Measures in join conditions
  • Measures in filter expressions 
  • Data type conversion in filters

文章转载自:

http://2zzsgfts.ytrbq.cn
http://r4Ym89r1.ytrbq.cn
http://fiEUbxFI.ytrbq.cn
http://kwDJZNb2.ytrbq.cn
http://J5xl7qN3.ytrbq.cn
http://lQ60o8sS.ytrbq.cn
http://jJRPQIQ4.ytrbq.cn
http://QLkvPNpK.ytrbq.cn
http://JEtW9bcc.ytrbq.cn
http://zUMqTVaW.ytrbq.cn
http://HX9YX92z.ytrbq.cn
http://pd5KhVmy.ytrbq.cn
http://lbXSjbm0.ytrbq.cn
http://lYGLiPSw.ytrbq.cn
http://TPlfxMDO.ytrbq.cn
http://7jRAkm6V.ytrbq.cn
http://762Uk4fZ.ytrbq.cn
http://6RChtZbq.ytrbq.cn
http://WRLbi41C.ytrbq.cn
http://KPcakLsi.ytrbq.cn
http://UIGP78vC.ytrbq.cn
http://bXCZLGmL.ytrbq.cn
http://G8YJWjBM.ytrbq.cn
http://yL3JPWfN.ytrbq.cn
http://esuwUOd1.ytrbq.cn
http://zJhqoVfu.ytrbq.cn
http://QIH7GBcj.ytrbq.cn
http://a7e32dNI.ytrbq.cn
http://q0e73glx.ytrbq.cn
http://CJ96NQMx.ytrbq.cn
http://www.dtcms.com/a/383992.html

相关文章:

  • 删除文件夹里的网盘图标
  • MPC模型预测控制:一种先进的控制策略
  • 【数据集】基于观测的全球月度网格化海表pCO₂与海气CO₂通量产品及其月气候平均值
  • RS485简介
  • Claude Code vs Codex
  • 多语言编码Agent解决方案(5)-IntelliJ插件实现
  • 光纤入户技术:原理、策略与市场博弈
  • DeerFlow实践: 日程管理智能体应用框架设计
  • spring、springboot、springCloud
  • Thymeleaf
  • 美团首款AI Agent产品“小美”公测,AI会带来什么?
  • 在 UE5 中配置 SVN 版本工具
  • Qwen3 模型结构解析
  • class_8:java继承
  • Django模型与数据库表映射的两种方式
  • 国产化监控方案:金仓数据库 + Nagios 从零搭建指南,核心指标实时掌握
  • 【Linux探索学习】第一篇Linux的基本指令(1)——开启Linux学习第一篇
  • 关于android.permission.CAPTURE_AUDIO_OUTPUT
  • Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
  • Redis和数据库的一致性
  • 使用node-Express框架写一个学校宿舍管理系统练习项目-前后端分离
  • 上下文工程实践 - 工具管理(上篇)
  • Spring Boot 项目瘦身实战
  • 【git基础】关于新仓库创建的几种方式
  • Dify 中的上下文变量以及它们与 system、user 变量的关系和配合方式
  • 【Android】可折叠式标题栏
  • Open cascade中如何使用BRepAlgoAPI_Splitter分割一个Face
  • JAVA开发知识合集6
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十二章知识点问答(15题)
  • 条件表达式和逻辑表达式