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

2024-06-09 08:04

本文主要是介绍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.

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

这篇关于hana 中的缓存视图功能,类似ORACLE 中的 物化视图功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044622

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql