Oracle 11.2.0.1 Result Cache 測試 - 3 引數及使用,限制

tolywang發表於2015-02-11
2. 客戶端Result Cache引數:  
CLIENT_RESULT_CACHE_SIZE 
該引數定義了單個客戶端程式所使用的Result Cache最大值。如果設定為0,則關閉了客戶端Result Cache技術。
該引數預設值即為0, 即預設客戶端result cache是關閉的 。 

CLIENT_RESULT_CACHE_LAG 
該引數定義客戶端與服務端最後一次往返(round-trip)時間閥值,在該時間閥值內,客戶端將向服務端查詢客
戶端Result Cache中的資料是否發生變化,該引數預設值為3000毫秒。即每隔3秒,Oracle將客戶端Result Cache
中的資料與服務端進行一次同步。

二,使用Result Cache  
1. 使用 Result Cache的方式:   
Database Setting
    result_cache_mode = FORCE (not recommended)
Query Hint
   select /*+ result_cache */ rep_name, sum(order_total)
   from orders  group by rep_name
Table Annotation Mode
     alter table order_history result_cache (mode force)
Session Mode
     alter session set result_cache_mode = force

2. 使用限制: 
Will Not Work With
Temporary tables
SYS or SYSTEM tables
Sequences (NEXTVAL or CURRVAL)
Date/Time Functions – SYSDATE, CURRENT_DATE, SYS_TIMESTAMP, CURRENT_TIMESTAMP, etc
USERENV / SYS_CONTEXT (with non-constant variables)
SYS_GUID

Query must retrieve the most current committed state of the data
No Active Transaction Against Objects in Current Session

query result based on a read-consistent snapshot of data that is older than the latest
committed version of the data will not be cached. If any of the tables used to build a
cached result has been modified in an ongoing transaction in the current session then
the result is never cached
    result cache在一致性上有嚴格的要求,要求進入result cache的內容必須來自於最新的已經提交
的資料塊,如果當前session正在對某張表進行dml操作,且尚未commit或者rollback,那麼這個session
裡所有對於這張表的select結果是無法快取在result cache裡的. 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1433510/,如需轉載,請註明出處,否則將追究法律責任。

相關文章