oracle小知識點15--result cache結果快取記憶體

selectshen發表於2016-01-18
oracle 11g新加入了結果快取特性,包括伺服器結果快取記憶體和客戶機快取記憶體.伺服器結果快取記憶體又包括sql查詢結果快取記憶體和pl/sql函式結果快取記憶體.它適合資料庫查詢頻繁執行並且查詢依賴的表資料變化頻率很低的情況.

以下是一些result_cache的說明:
sql中透過/*+ result_cache*/提示實現result cache,pl/sql函式透過建函式時的result_cache子句實現.使用result cache的sql在執行計劃上會有result cache運算子.

dbms_result_cache包,可以監視和管理result cache.
例如:dbms_result_cache.flush:清除result cache.
    dbms_result_cache.invalidate(owner,name):使某物件的result cache無效.
    dbms_result_cache.status:顯示result cache的狀態.
    dbms_result_cache.memory_report:顯示result cache的記憶體使用狀況.

v$result_cache_*檢視,是和result cache存相關.
例如:
    v$result_cache_statistics:顯示result cache的設定和統計資料.
    v$result_cache_objects:顯示result cache中的物件和物件狀態.
    v$result_cache_memory:顯示result cache的記憶體統計資料.

資料庫引數:
result_cache_mode:預設manual,只能在sql中透過/*+ result_cache*/提示實現result cache.auto根據執行頻率,執行成本和物件的變化頻率等因素等自動result cache.force只要result cache合理,會快取所有查詢結果.
result_cache_max_size:result cache是SGA share pool的一部分,由引數result_cache_max_size控制其大小,預設memory_target的0.25%或者sga_target的0.5%或者shared_pool_size的1%,但最大不能超過share pool的75%.
result_cache_max_reslut:預設5,即5%,單條sql查詢結果最大佔用result_cache_max_size的比例.
result_cache_remote_expiration:預設0.指定遠端資料庫中查詢結果涉及的表保證多久不變的時間,此引數一般只適合用於只讀的表或週期性更改的表,否則會影響本地庫呼叫時的正確性.


   

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

相關文章