hana 中的缓存视图功能,雷同ORACLE 中的 物化视图功能

打印 上一主题 下一主题

主题 1816|帖子 1816|积分 5448

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么启用物化视图、缓存视图这里就不过多解释了。
参考官方文章:
Static Result Cache | SAP Help Portal
在 HANA中,视图的缓存分 静态结果缓存 和 动态结果缓存。
静态结果缓存和动态结果缓存是缓存查询结果以获得性能优势的可配置应用步伐。
缓存在SAP HANA中被广泛用作一种战略,通过重新利用查询的数据来进步性能,而不是每次请求数据时都重新读取和处理数据。静态结果缓存(有时称为缓存视图)和动态结果缓存就是这方面的应用。静态结果缓存是为特定视图创建的,在用户定义的保存期内保持有效。动态结果缓存是雷同的,但没有保存期;它通过维护应用于基础表的所有更改的增量记载来保证事件一致性。

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

对于SQL视图/函数,您可以将聚合类型明白声明为ADD缓存子句的一部门,然后将在视图定义的顶部利用额外的聚合操作来定义缓存。以下示例表现了这一点,该示例创建了一个视图,然后利用alter view 语法将该视图添加到缓存中,保存期为120分钟。
  1. CREATE VIEW SIMPLE_VIEW AS
  2. (SELECT A, SUM(KF1) AS KF1, MIN(KF2) AS KF2, MAX(KF3) AS KF3
  3. FROM SIMPLE_TABLE GROUP BY A)
复制代码
  1. 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;

在下面的示例查询中,前两个语句一致地利用与查询中定义的聚合值相同的聚合值,并且可以利用缓存。第三个示例无法利用缓存的数据,因为它请求未包含在缓存中的未聚合详细信息:
  1. SELECT SUM(KF1) FROM SIMPLE_VIEW WITH HINT(RESULT_CACHE);
  2. SELECT SUM(KF1), MIN(KF2), MAX(KF3) FROM SIMPLE_VIEW GROUP BY A WITH HINT(RESULT_CACHE);
  3. /* only aggregated data is cached - cannot use the cached data*/
  4. SELECT KF1, KF2, KF3 FROM SIMPLE_VIEW WITH HINT(RESULT_CACHE);
复制代码

如果用户没有在ALTER VIEW语句中声明聚合选项,则缓存的定义将与视图定义相同:
  1. ALTER VIEW SIMPLE_VIEW ADD CACHE RETENTION 120;
复制代码
2、过滤器(FILTER子句)
此示例说明了筛选。如果用户声明了附加筛选器选项,则将利用视图定义顶部的附加筛选器来定义缓存:
  1. ALTER VIEW SIMPLE_VIEW ADD CACHE RETENTION 120 FILTER B > 3;
复制代码
缓存内容将根据查询结果创建:SELECT*from SIMPLE_VIEW WHERE B>3;
在下面的示例查询中,前两条语句将利用缓存,因为这些查询只需要缓存数据(B>3)。第三个示例无法利用缓存数据,因为查询请求的数据不是缓存数据的一部门。
 
  1. SELECT SUM(KF1) FROM SIMPLE_VIEW WHERE B > 3 AND B < 10 WITH HINT(RESULT_CACHE);
  2. SELECT SUM(KF1) FROM SIMPLE_VIEW WHERE B > 3 AND A = 1 WITH HINT(RESULT_CACHE);
  3. /* only B > 3 data is cached - cannot use the cached data*/
  4. 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.
即使已过保存期,也无需刷新即可访问现有缓存数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表