Oracle11g新特性:SQL Result Cache [zt]
DB_BUFFER只能快取訪問過的BLOCK,部分解決了物理讀的問題,查詢仍然需要大量的邏輯讀。
物化檢視提供的是查詢重寫的功能,對於大部分的情況,只是簡化了SQL的複雜度,即使是完全滿足查詢的條件,物化檢視的掃描也是不可避免的。
而快取結果集——RESULT CACHE則截然不同,它快取的是查詢的結果。不再需要大量的邏輯讀,不再需要任何的複雜計算,而是直接將已經快取的結果返回。
[@more@]
Server Result Cache透過在SGA中分配一個緩衝區來儲存查詢結果,Oracle引入了幾個新的初始化引數來控制這個cache的大小:RESULT_CACHE_MODE、RESULT_CACHE_MAX_SIZE等。RESULT_CACHE_MAX_SIZE指明SGA中RESULT CACHE功能可以使用的最大的記憶體容量。如果這個引數設定為0,則關閉RESULT CACHE功能。引數result_cache_max_result則控制單個快取結果可以佔總的Server result cache大小的百分比。RESULT_CACHE_MODE引數設定Oracle如何使用RESULT CACHE,該引數有三個值:MANUAL、AUTO、FORCE。可以在system、session、table或者語句級別來設定cache的使用。在語句級可以使用一個新的hint來控制是否快取查詢結果。Oracle新增了兩個HINT,RESULT_CACHE和NO_RESULT_CACHE。透過這兩個提示,可以明確的指出下面的語句是否進行RESULT CACHE。
Oracle提供了DBMS_RESULT_CACHE包來管理和維護RESULT CACHE。Oracle還新增了幾個關於RESULT CACHE的系統檢視,使用者可以看到和RESULT CACHE相關的各種資訊,檢視包括:V$RESULT_CACHE_DEPENDENCY、V$RESULT_CACHE_MEMORY、V$RESULT_CACHE_OBJECTS和V$RESULT_CACHE_STATISTICS等。
除了Server端引入Result Cache,透過OCI介面,在Client端也可以快取查詢結果。典型的場景就是我們在應用伺服器端快取查詢結果,這樣在前端執行該查詢時,甚至不需要到資料庫中去執行該查詢。客戶端結果快取在OCI程式中,可以被該程式中的多個session或者執行緒共享。客戶端快取機制透過一個新的初始化引數來控制:client_result_cache_size,當該引數大於0時,該特性被啟用。同樣的,該特性也可以在system、session、table或者語句級來設定。透過在服務端設定引數而不是客戶端設定,可以集中的管理該特性,但是也可以在各個客戶端單獨進行設定,客戶端的設定將覆蓋服務端的設定。
下面簡單說明一下RESULT_CACHE_MODE的三種模式下,快取結果集是如何工作的。
- 當引數值設定為MANUAL時,只有透過HINT明確提示的SQL才會讀取快取結果集。如果不加提示,那麼Oracle不會利用已經快取的結果。
- 而對於AUTO模式,Oracle如果發現緩衝結果集已經存在,那麼就會使用。但是如果緩衝結果集不存在,Oracle並不會自動進行緩衝。只有使用HINT的情況下,Oracle才會將執行的結果集快取。
- 對於FORCE引數,顧名思義,就是會對所有的SQL進行快取,除非明確使用NO_RESULT_CACHE提示。
RESULT CACHE功能對於下列情況是無效的:系統表和臨時表;序列的NEXTVAL和CURRVAL偽列;SYSDATE、SYSTIMESTAMP等函式;所有非確定性PL/SQL函式。
REF:
Oracle11新特性——SQL快取結果集(一)Oracle11新特性——SQL快取結果集(二) Oracle11新特性——SQL快取結果集(三) Oracle11新特性——SQL快取結果集(四) Oracle11新特性——SQL快取結果集(五)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12402/viewspace-1044773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【11gR2新特性】DBMS_RESULT_CACHE管理結果快取的包快取
- 淺談Oracle Result CacheOracle
- library cache pin和library cache lock (zt)
- SQL Access Advisor(zt)SQL
- [20190214]11g Query Result Cache RC Latches.txt
- 23C新特性SQL防火牆 (SQL Firewall)SQL防火牆
- Oracle SQL optimization-2(zt)OracleSQL
- [20190214]11g Query Result Cache RC Latches補充.txt
- SQL優化器探討(zt)SQL優化
- 23c 新特性之SQL_transpilerSQL
- ABAP 740新的OPEN SQL增強特性SQL
- SQL?Server新特性SequenceNumber用法介紹YTZBSQLServer
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL Server 2005效能調整二(zt)SQLServer
- SQL Server 2005效能調整一(zt)SQLServer
- 【10g SQL新特性】q-quote使用SQL
- Oracle 20c 新特性:SQL 巨集支援(SQL Macro)Scalar 和 Table 模式OracleSQLMac模式
- 23c 新特性之實時SQL計劃管理SQL
- 利用cache特性檢測Android模擬器Android
- SAP ABAP SQL的execution plan和cacheSQL
- [20181107]18c新特性取消執行的sql.txtSQL
- 新特性
- SQL Server 2022 AlwaysOn新特性之包含可用性組介紹SQLServer
- Swift 5.0 值得關注的特性:增加 Result<T, E: Error> 列舉型別SwiftError型別
- GaussDB(for MySQL) :Partial Result Cache,通過快取中間結果對運算元進行加速MySql快取
- Oracle11g 密碼延遲認證導致library cache lock的情況分析Oracle密碼
- cache2k:Guava Cache及Caffeine之外的新選擇Guava
- 關於SQL Server中索引使用及維護簡介(zt)SQLServer索引
- Hadoop新特性Hadoop
- React 新特性React
- 新特性介面
- Numercial result of ADFP
- INSTEAD OF(zt)
- lsof(zt)
- ElasticSearch7.3學習(三十)----ES7.X SQL新特性解析及使用Java api實現sql功能ElasticsearchSQLJavaAPI
- IDL 9.1新特性
- .NET 7新特性
- ES 2024 新特性
- Java 8 新特性Java