摘要:存放與生命周期整合在當前數據源,隨著當前數據事物發生而重置。需要額外添加如,不需要當函數重建時,原緩存數據狀態置為無效,新的緩存數據會生成。效果甚佳,特此記錄。
作用與用法
在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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61887.html
摘要:來源于拉丁語,不要與混淆了。本文首先介紹一個簡單的使用優化技術的例子,然后解讀和庫中使用的源碼,加深理解。總結是一種優化技術,避免一些不必要的重復計算,可以提高計算速度。 memoization 來源于拉丁語 memorandum (to be remembered),不要與 memorization 混淆了。 首先來看一下維基百科的描述: In computing, memoizat...
閱讀 1198·2021-11-15 18:00
閱讀 1795·2021-10-08 10:15
閱讀 759·2021-09-04 16:48
閱讀 2382·2021-09-04 16:48
閱讀 1318·2019-08-29 18:40
閱讀 971·2019-08-29 13:08
閱讀 2992·2019-08-26 14:06
閱讀 1115·2019-08-26 13:35