PLSQL Language Reference-PL/SQL子程式-PL/SQL函式結果快取-開啟函式結果快取
PL/SQL函式結果快取
PL/SQL函式結果快取機制提供了語言支援和系統管理的方法來在SGA中快取PL/SQL函式結果,這個快取的結果對於執行你的應用程式的每個會話都是可用的。快取機制高效並易於使用,可以將你從開發自己的快取和快取管理策略中解放出來。
為函式開啟結果快取,使用RESULT CACHE子句。當結果快取函式被呼叫的的時候,系統會檢查緩衝區,如果緩衝區包含前面使用相同引數呼叫該函式產生的結果集,則系統會將快取的結果返回給呼叫者,而不會執行函式體;如果快取不包含結果,則系統會執行函式體,並在將控制權返回給呼叫者之前,將結果集加入到快取中。
注意:如果函式執行時異常結束,則異常的結果不會儲存到快取中。
快取可以積累多個結果集,對於每個唯一的引數值組合都會有一個結果,結果快取函式都被呼叫。如果系統需要更多的記憶體,它會使一個或多個快取結果過期(刪除)
Oracle資料庫會自動檢測結果快取函式在執行時查詢的資源(表和檢視)。如果對這些資料來源的任何改變被提交了,則快取的結果會變成無效,需要重新計算。
經常被呼叫的,但它依賴的資訊卻很少改變或根本不改變的函式,最適合應用結果快取。
開啟函式結果快取
--函式結果快取 CREATE OR REPLACE PACKAGE department_pkg IS TYPE dept_info_record IS RECORD ( dept_name departments.department_name%TYPE, mgr_name employees.last_name%TYPE, dept_size PLS_INTEGER);
-- 對結果進行快取的函式 FUNCTION get_dept_info (dept_id PLS_INTEGER) RETURN dept_info_record RESULT_CACHE;
END department_pkg; /
CREATE OR REPLACE PACKAGE BODY department_pkg IS -- 函式定義 FUNCTION get_dept_info (dept_id PLS_INTEGER) RETURN dept_info_record --結果集依賴於DEPARTMENTS和EMPLOYEES表,對錶的任何改變都會使快取結果無效 RESULT_CACHE RELIES_ON (DEPARTMENTS, EMPLOYEES) IS rec dept_info_record; BEGIN SELECT department_name INTO rec.dept_name FROM departments WHERE department_id = dept_id;
SELECT e.last_name INTO rec.mgr_name FROM departments d, employees e WHERE d.department_id = dept_id AND d.manager_id = e.employee_id;
SELECT COUNT(*) INTO rec.dept_size FROM EMPLOYEES WHERE department_id = dept_id;
RETURN rec; END get_dept_info; END department_pkg; / |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1132832/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 精讀《函式快取》函式快取
- SQL程式設計:group by合併結果字串 —> group_concat函式就能行SQL程式設計字串函式
- 快取函式的簡單使用快取函式
- 簡單的檔案快取函式快取函式
- Python進階 函式快取 (Function caching)Python函式快取Function
- sql常用函式詳解(一)——字串擷取SQL函式字串
- 【SQL】19 SQL函式SQL函式
- sql函式SQL函式
- SQL-函式 - 聚合函式SQL函式
- 深入分散式快取 — 學習總結分散式快取
- 常用JS函式-陣列扁平化,快取函式,柯里化函式,防抖和節流函式JS函式陣列快取
- python中函式如何返回多個結果?Python函式
- Python 工匠:讓函式返回結果的技巧Python函式
- PostgreSQL函式:返回表查詢結果集SQL函式
- MySQL:MySQL客戶端快取結果導致OOMMySql客戶端快取OOM
- Spark SQL 開窗函式SparkSQL函式
- 記憶(快取)函式返回值:Python 實現快取函式Python
- 聊聊本地快取和分散式快取快取分散式
- T-SQL——函式——字串操作函式SQL函式字串
- Sql 中的 left 函式、right 函式SQL函式
- 分散式快取分散式快取
- Redis——快取穿透、快取擊穿、快取雪崩、分散式鎖Redis快取穿透分散式
- 分散式快取 - 快取簡介,常用快取演算法分散式快取演算法
- MySQL 字串擷取相關函式總結MySql字串函式
- 結合Hazelcast和Spring的分散式快取 - reflectoringASTSpring分散式快取
- SQL 視窗函式SQL函式
- SQL LEN()函式用法SQL函式
- T-SQL——函式——時間操作函式SQL函式
- 面試總結 —— Redis “快取穿透”、“快取擊穿”、“快取雪崩”面試Redis快取穿透
- MaxCompute如何對SQL查詢結果實現分頁獲取SQL
- Flink1.17 版本常見的 SQL 函式總結SQL函式
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- 聊聊分散式快取分散式快取
- 分散式快取方案分散式快取
- redis→分散式快取Redis分散式快取
- 0710_plsql 函式SQL函式
- 動態 SQL 和快取機制SQL快取
- Redis 快取雪崩,快取擊穿和快取穿透技術方案總結Redis快取穿透
- 用Java寫一個分散式快取——快取管理Java分散式快取