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://www.pswp.cn/pingmian/96560.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙审核问题——Scroll中嵌套了List/Grid时滑动问题

文章目录背景原因解决办法1、借鉴Flutter中的解决方式&#xff0c;如下图2、鸿蒙Next中对应的解决方式&#xff0c;如下图3、官方文档回访背景 来源一次审核被拒的情况。也是出于粗心导致的。之前在flutter项目中也是遇到过这种问题的。其实就是滚动视图内嵌滚动视图造成的&am…

测试电商购物车功能,设计测试case

在电商场景中&#xff0c;购物车是连接商品浏览与下单支付的关键环节&#xff0c;需要从功能、性能、兼容性、安全性等多维度进行测试。以下是购物车功能的测试用例设计&#xff1a; 一、功能测试 1. 商品添加到购物车 - 未登录状态下&#xff0c;添加商品到购物车&#xff08;…

Linux --- 常见的基本指令

一. 前言本篇博客使用的 Linux 操作系统是 centos &#xff0c;用来学习Linux 的 Linux 系统的内核版本和系统架构信息版本如下所示&#xff1a;上图的主要结构为&#xff1a;主版本号-次版本号 修正次数&#xff0c;3.10.0 是操作系统的主版本号&#xff1b;当我们在维护一段L…

微信小程序 -开发邮箱注册验证功能

一、前端验证&#xff1a;正则表达式与插件结合正则表达式设计 使用通用邮箱格式校验正则&#xff0c;并允许中文域名&#xff08;如.中国&#xff09;&#xff1a; const emailReg /^[a-zA-Z0-9._%-][a-zA-Z0-9-](?:\.[a-zA-Z0-9-])*\.[a-zA-Z]{2,}(?:\.[a-zA-Z]{2})?$/i;…

docker 部署 code-server

docker 部署 code-servercode-serverError response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headersdocker 配置正确步骤 阿里云源permission de…

网络编程专题:从源码解析网络编程常用方法(基于6.16.3内核)

前言 本文是因为作者在研究下面这个代码时发现的问题&#xff1a; int main() {// 1. 创建 IPv4 专用地址结构体 sockaddr_instruct sockaddr_in ipv4_addr;memset(&ipv4_addr, 0, sizeof(ipv4_addr)); // 初始化清零// 2. 填充 IPv4 专属信息ipv4_addr.sin_family AF_IN…

2025年数字公共治理专业重点学什么内容?(详细指南)

数字公共治理作为一个新兴的跨学科领域&#xff0c;近年来受到越来越多高校和学生的关注。这个专业融合了多个学科的知识体系&#xff0c;旨在培养掌握现代治理理念和技术应用能力的复合型人才。对于在校大学生而言&#xff0c;了解这一专业的学习内容和发展方向&#xff0c;有…

一招解决 win 下 终端打印中文乱码问题

适合所有终端 cmd powershell git bash&#xff0c; 原理&#xff1a;修改电脑的区域设置&#xff0c;勾选使用 UTF-8 1.电脑搜索 区域&#xff0c; 打开区域设置2. 打开相关设置3. 点击更改 日期、时间或数字格式4. 选则管理-点击更改系统区域设置&#xff0c;在弹出框中勾选 …

Elasticsearch面试精讲 Day 13:索引生命周期管理ILM

【Elasticsearch面试精讲 Day 13】索引生命周期管理ILM 在“Elasticsearch面试精讲”系列的第13天&#xff0c;我们将深入探讨 索引生命周期管理&#xff08;Index Lifecycle Management, ILM&#xff09; 这一核心运维机制。作为大规模日志、监控和时序数据场景下的必备功能&…

Python快速入门专业版(二十八):函数参数进阶:默认参数与可变参数(*args/**kwargs)

目录引一、默认参数&#xff1a;给函数参数设置“默认值”1. 基本语法与使用示例示例1&#xff1a;带默认参数的乘法函数2. 默认参数的核心规则&#xff1a;必须放在非默认参数之后示例2&#xff1a;默认参数位置错误&#xff08;报错&#xff09;3. 默认参数的“可变对象陷阱”…

FreeRTOS 知识点

一、配置过程二、基本知识点2.1 抢占优先级和响应优先级在 FreeRTOS 中&#xff0c;任务的调度方式主要有 ​​抢占式&#xff08;Preemptive&#xff09;​​ 和 ​​协作式&#xff08;Cooperative&#xff09;​​ 两种模式&#xff0c;它们的核心区别在于 ​​任务如何释放…

SQL注入漏洞手动测试详细过程

这是一次详细的、基于真实手动测试思维的SQL注入漏洞测试过程记录。我们将以一个假设的Web应用程序为例&#xff0c;进行逐步探测和利用。测试目标假设我们正在测试一个名为 example.com 的电商网站&#xff0c;其有一个查看商品详情的页面&#xff0c;URL 为&#xff1a; http…

机器人控制器开发(通讯——ros话题转为websocket)

1 为什么要实现ROS话题转WebSocket 主要有如下5个优点&#xff1a;跨平台通信需求 WebSocket作为一种标准的Web通信协议&#xff0c;允许任何支持WebSocket的客户端&#xff08;网页、移动应用、其他系统&#xff09;与ROS机器人进行实时通信&#xff0c;打破了ROS传统通信方式…

SQL-字符串函数、数值函数、日期函数

字符串函数1. 字符串拼接concat-- 拼接字符串hello和mysql&#xff0c;结果为hellomysql -- 格式&#xff1a;concat(str1, str2, ...)&#xff1a;拼接多个字符串 select concat(hello, mysql);注意事项&#xff1a;若任一参数为null&#xff0c;结果为null&#xff08;如conc…

JAVA高级工程师--Redis持久化详细版

一、Redis DBRedis 数据库的数量在单机和集群模式下有根本性的区别。1. 单机模式 (Standalone)在单机模式下&#xff0c;Redis 默认提供 16 个逻辑数据库&#xff0c;索引编号为 0 到 15。选择数据库&#xff1a; 使用 SELECT <index> 命令进行切换。例如&#xff0c;SE…

hexo文章

文章目录Tag的使用勾选框图片的组合站内文章引用注意&#xff1a;1、关于中括号的问题目录总结 Tag的使用 在 markdown 中加入如下的代码来使用便签&#xff1a; {% note success %} 文字 或者 markdown 均可 {% endnote %}或者使用 HTML 形式&#xff1a; <p class&quo…

技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)

Spring Bean的生命周期是什么样的&#xff1f; 在Spring容器里一个Bean的从创建到销毁一般都是经历了以下几个阶段&#xff1a; 定义阶段&#xff08;Bean元信息配置&#xff09;>实例化阶段&#xff08;创建Bean对象&#xff09;>初始化阶段&#xff08;执行初始化逻辑&…

SpringSecurity的应用

官方文档 一、核心能力 1.1 身份认证 (Authentication) - “你是谁&#xff1f;” 多种认证方式&#xff1a;支持几乎所有主流认证方案&#xff0c;如表单登录&#xff08;Username/Password&#xff09;、HTTP Basic、HTTP Digest、OAuth 2.0、OIDC (OpenID Connect)、SAML …

跨境云手机与传统手机的不同之处

传统手机主要满足个人日常生活中的通讯、娱乐、办公等基础需求&#xff0c;比如用于日常打电话联系亲朋好友&#xff0c;闲暇时刷短视频、玩本地安装的游戏&#xff0c;或者简单处理一些文档、邮件等办公事务。跨境云手机主要是侧重于跨境业务场景&#xff0c;对于从事跨境电商…

MemGPT: Towards LLMs as Operating Systems

1 MemGPT: Towards LLMs as Operating Systems 论文地址&#xff1a;MemGPT: Towards LLMs as Operating Systems 代码地址&#xff1a;https://github.com/letta-ai/letta 1.1 MemGPT MemGPT&#xff08;MemoryGPT&#xff09;借鉴传统操作系统的分层内存管理思想&#xff08;…