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

相关文章

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab