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

hana 中的缓存视图功能,类似ORACLE 中的 物化视图功能

为什么启用物化视图、缓存视图这里就不过多解释了。

参考官方文章:

Static Result Cache | SAP Help Portal

在 HANA中,视图的缓存分 静态结果缓存 和 动态结果缓存。

静态结果缓存和动态结果缓存是缓存查询结果以获得性能优势的可配置应用程序。
缓存在SAP HANA中被广泛用作一种策略,通过重新使用查询的数据来提高性能,而不是每次请求数据时都重新读取和处理数据。静态结果缓存(有时称为缓存视图)和动态结果缓存就是这方面的应用。静态结果缓存是为特定视图创建的,在用户定义的保留期内保持有效。动态结果缓存是类似的,但没有保留期;它通过维护应用于基础表的所有更改的增量记录来保证事务一致性。

1、创建静态结果缓存:聚合(OF子句)


对于SQL视图/函数,您可以将聚合类型明确声明为ADD缓存子句的一部分,然后将在视图定义的顶部使用额外的聚合操作来定义缓存。以下示例显示了这一点,该示例创建了一个视图,然后使用alter view 语法将该视图添加到缓存中,保留期为120分钟。

CREATE VIEW SIMPLE_VIEW AS 
(SELECT A, SUM(KF1) AS KF1, MIN(KF2) AS KF2, MAX(KF3) AS KF3 
FROM SIMPLE_TABLE GROUP BY A)
ALTER VIEW SIMPLE_VIEW ADD CACHE RETENTION 120 OF A, SUM(KF1), MIN(KF2), MAX(KF3), KF4; 

缓存内容将根据查询结果创建:SELECT A,SUM(KF1),MIN(KF2),MAX(KF3)from SIMPLE_VIEW GROUP BY A;


在下面的示例查询中,前两个语句一致地使用与查询中定义的聚合值相同的聚合值,并且可以利用缓存。第三个示例无法使用缓存的数据,因为它请求未包含在缓存中的未聚合详细信息:

SELECT SUM(KF1) FROM SIMPLE_VIEW WITH HINT(RESULT_CACHE);SELECT SUM(KF1), MIN(KF2), MAX(KF3) FROM SIMPLE_VIEW GROUP BY A WITH HINT(RESULT_CACHE);/* only aggregated data is cached - cannot use the cached data*/
SELECT KF1, KF2, KF3 FROM SIMPLE_VIEW WITH HINT(RESULT_CACHE);


如果用户没有在ALTER VIEW语句中声明聚合选项,则缓存的定义将与视图定义相同:

ALTER VIEW SIMPLE_VIEW ADD CACHE RETENTION 120; 

2、过滤器(FILTER子句)
此示例说明了筛选。如果用户声明了附加筛选器选项,则将使用视图定义顶部的附加筛选器来定义缓存:

ALTER VIEW SIMPLE_VIEW ADD CACHE RETENTION 120 FILTER B > 3; 

缓存内容将根据查询结果创建:SELECT*from SIMPLE_VIEW WHERE B>3;
在下面的示例查询中,前两条语句将利用缓存,因为这些查询只需要缓存数据(B>3)。第三个示例无法使用缓存数据,因为查询请求的数据不是缓存数据的一部分。
 

SELECT SUM(KF1) FROM SIMPLE_VIEW WHERE B > 3 AND B < 10 WITH HINT(RESULT_CACHE);SELECT SUM(KF1) FROM SIMPLE_VIEW WHERE B > 3 AND A = 1 WITH HINT(RESULT_CACHE);/* only B > 3 data is cached - cannot use the cached data*/
SELECT KF1, KF2, KF3 FROM SIMPLE_VIEW WHERE A = 1 WITH HINT(RESULT_CACHE);

@@@@  启用结果缓存的提示

静态结果缓存功能在默认情况下是禁用的,只有在SQL语句中使用以下result_cache提示之一显式调用时才会考虑:

Parameter

Detail

HINT(RESULT_CACHE)

Always use the result cache if it is available.

如果结果缓存可用,请始终使用它。

HINT(RESULT_CACHE_MAX_LAG(seconds))

Sets the retention period of the result cache to this value (or the value set in the ADD CACHE configuration).

将结果缓存的保留期设置为此值(或ADD cache配置中设置的值)。

HINT(RESULT_CACHE_NON_TRANSACTIONAL)

Allows join or union operations using the result cache entries and disregards possible transaction inconsistencies.

允许使用结果缓存项进行联接或并集操作,并忽略可能的事务不一致。

HINT(RESULT_CACHE_NO_REFRESH)

Access existing cached data without refreshing it even if its retention period is over.

即使已过保留期,也无需刷新即可访问现有缓存数据。

相关文章:

  • Tinymce富文本编辑器在el-dialog中遮挡的问题
  • Jenkins 内置变量 和变量作用域
  • 【成品设计】基于物联网的停车管理系统设计与实现
  • Spring Boot:Java 应用开发高效之道
  • 数据结构之初识泛型
  • idea有这个类却报红,无法用快捷键找到
  • k8s+RabbitMQ单机部署
  • 面试题——Spring
  • 我的创作纪念日 CF1620D Exact Change 题解
  • Python - 处理电子书的库
  • 【代码随想录训练营】【Day 49+】【动态规划-8】| Leetcode 121, 122, 123
  • C#使用OpenXml读取Word、PPT、Excel文档内容
  • linux pip 离线安装
  • 2024-6-10-zero shot,few shot以及无监督学习之间的关系是什么
  • NettyのBufferChannelSelector用法
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 2017-08-04 前端日报
  • Apache Pulsar 2.1 重磅发布
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript创建对象的四种方式
  • LeetCode18.四数之和 JavaScript
  • node.js
  • October CMS - 快速入门 9 Images And Galleries
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python学习之路13-记分
  • SpringBoot 实战 (三) | 配置文件详解
  • 当SetTimeout遇到了字符串
  • 给Prometheus造假数据的方法
  • 微信小程序实战练习(仿五洲到家微信版)
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 怎样选择前端框架
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • C# - 为值类型重定义相等性
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • $ git push -u origin master 推送到远程库出错
  • (20)docke容器
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C语言)fread与fwrite详解
  • (C语言)二分查找 超详细
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (层次遍历)104. 二叉树的最大深度
  • (差分)胡桃爱原石
  • (二)丶RabbitMQ的六大核心
  • (规划)24届春招和25届暑假实习路线准备规划
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)Linux下编译安装log4cxx
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .gitignore文件设置了忽略但不生效
  • .NET 5种线程安全集合
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net web项目 调用webService
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况