快取與程式包變數
對 sql 結果快取和 pl/sql 函式快取,您也可以使用程式包變數(可以是標量資料型別或 pl/sql 集合)實現在記憶體中快取值。應用程式可以訪問變數,而不是錶行或函式。因為基於記憶體,它的行為像快取,那麼 sql 結果快取新增了什麼值?
差別眾多。對乙個客戶(假設 cust_id = 5)執行該函式後,從另乙個 會話對同一客戶執行該函式:
sql> select get_tax_rate(&n) from dual
2 /enter value for n: 5
old 1: select get_tax_rate(&n) from dual
new 1: select get_tax_rate(5) from dual
get_tax_rate(5)
---------------
61 row selected.
elapsed: 00:00:00.00
注意執行時間,它表明結果源自快取,而不是通過函式的執行。因此,儘管會話中沒有快取該函式,任一呼叫它的會話仍然可以從快取中使用它。
快取針對資料庫例項,而不是會話。這一讓所有其他會話能使用乙個會話中的快取的能力極其不同於使用程式包變數在記憶體中儲存值的方法,在這一方法中,變數只能在乙個會話中可見。
而且,程式包變數無法感知底層表的更改。當資料更改時,您需要手動重新整理資料,否則應用程式將獲取陳舊資料。在底層表資料更改時,sql 結果快取和 pl/sql 函式快取會自動重新整理快取,不需使用者介入
result-cached functions的一些限制
oracle11g快取和連線池 3
快取與程式包變數 對 sql 結果快取和 pl sql 函式快取,您也可以使用程式包變數 可以是標量資料型別或 pl sql 集合 實現在記憶體中快取值。應用程式可以訪問變數,而不是錶行或函式。因為基於記憶體,它的行為像快取,那麼 sql 結果快取新增了什麼值?差別眾多。對乙個客戶 假設 cust ...
Oracle11g遠端連線配置
伺服器端 配置 oracle11g r2 x64 1.設定監聽 a.啟動欄 開始 程式 oracle oradb11g home1 配置和移植工具 net manager b.oracle net 配置 本地 監聽程式 listener 檢視是否有本地位址在監聽,沒有則新增,主機 localhost...
PLSQL 連線Oracle11g測試
初學者最近學習乙個專案用到oracle11g,之前沒玩過,網上查了很多,也掉了一些坑,做個筆記 環境 據說oracle11g很耗效能,我裝在虛擬機器window 7 64位 oracle vm virtualbox 模仿伺服器環境,不用時可以關掉 plsql版本是 plsql developer 1...