摘要:存放与生命周期整合在当前数据源,随着当前数据事物发生而重置。需要额外添加如,不需要当函数重建时,原缓存数据状态置为无效,新的缓存数据会生成。效果甚佳,特此记录。
作用与用法
在Function中使用数据集缓存能够减少函数内部查询调用次数,从而提高效率,尤其适用于数据变动不频繁(如:组织机构)的数据。属于11g新特性。
</>复制代码
CREATE OR REPLACE FUNCTION getOperatorNames (v_empIds varchar)
RETURN VARCHAR RESULT_CACHE
...
在返回值、类型 后加“RESULT_CACHE”即可。
存放与生命周期整合在当前数据源,随着当前数据事物发生而重置。(11g release 1需要额外添加“RELIES_ON”【如:result_cache relies_on (tablename)】,11g release 2不需要)
</>复制代码
cached results can be directly coupled to their underlying data sources.This means that cached results are invalidated and regenerated when transactions occur against the underlying data.
当函数重建时,原缓存数据状态置为无效,新的缓存数据会生成。(缓存空间通过类似“最近最少使用”算法维护)可通过以下sql文查看:
</>复制代码
SELECT id
, name
, type
, status
, invalidations
FROM v$result_cache_objects
ORDER BY
id;
监控
</>复制代码
SELECT name, value
FROM v$result_cache_statistics
WHERE name IN ("Create Count Success","Find Count");
"Create Count Success" 可以理解为缓存个数,"Find Count"为命中次数。当然,v$result_cache_statistics中还有其他很多信息,比如缓存大小。
一些特性执行计划中不统计Function Result Cache;
支持跨回话;
更多细节可以查看:pl/sql function result cache in 11g
今天项目一个查询页面加载太慢了,数据量大用户体验差。其中有个根据人员ID查询名称的function就占用了0.3~0.4s,不能忍啊。心想有没类似redis的缓存的做法,通过搜索找到了result cache并应用了。效果甚佳,特此记录。
oracle水很深,我们还只是浮游生物。
</>复制代码
更多有意思的内容,欢迎访问rebey.cn
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/61887.html
摘要:来源于拉丁语,不要与混淆了。本文首先介绍一个简单的使用优化技术的例子,然后解读和库中使用的源码,加深理解。总结是一种优化技术,避免一些不必要的重复计算,可以提高计算速度。 memoization 来源于拉丁语 memorandum (to be remembered),不要与 memorization 混淆了。 首先来看一下维基百科的描述: In computing, memoizat...
阅读 1268·2021-11-15 18:00
阅读 1874·2021-10-08 10:15
阅读 906·2021-09-04 16:48
阅读 2543·2021-09-04 16:48
阅读 1378·2019-08-29 18:40
阅读 1045·2019-08-29 13:08
阅读 3134·2019-08-26 14:06
阅读 1205·2019-08-26 13:35