資料庫物件比如表放入記憶體,行發生改變不會自動同步到記憶體的總結
問題:把表資料放入DATABASE BUFFER中,把表的查詢結果放入result_cache,一旦表的行更改會自動同步到這些記憶體中嗎?
答案: 不會 ,而是重新訪問資料檔案進行查詢。
ORACLE官方支援的回覆
如果表中的資料有行增加或者更新,當再次訪問相關的表或執行查詢時, Oracle能檢測到這種資料的更新,訪問資料檔案來進行查詢。不是定時的把資料檔案中的資料同步到KEEP buffer pool 、database buffer cache、result cache 中。
把物件放入記憶體的四種方法:DBMS_SHARED_POOL.KEEP、buffer_pool keep、cache、result_cache
DBMS_SHARED_POOL.KEEP和result_cache都是放入shared_pool中
buffer_pool keep、cache都是放入database buffer中
BUFFER_POOL用來指定存貯的緩衝池,而CACHE/NOCACHE指定儲存的方式。當BUFFER_POOL和CACHE同時使用時,KEEP比NOCACHE有優先權。
DBMS_SHARED_POOL.KEEP ('0034CDFF,20348871','C')
DBMS_SHARED_POOL.KEEP 用於把PL/SQL物件,觸發器,以及SQL遊標等保持在shared pool中。這與表和查詢結果是不同的物件。
查詢結果見檢視v$db_object_cache
select * from v$db_object_cache where kept='YES' and name like 'XX'
Alter table tablename storage ( buffer_pool keep );
查詢結果見檢視DBA_TABLES
select owner,table_name,buffer_pool from dba_tables where BUFFER_POOL='KEEP'
取消表放入快取
Alter table tablename storage (buffer_pool default);
Alter table tablename cache
查詢結果見檢視DBA_TABLES
select owner,table_name,cache from dba_tables where cache=' Y'
取消表放入快取
Alter table tablename nocache
Alter table tablename result_cache (mode force);
查詢結果見檢視V$RESULT_CACHE_OBJECTS
result_cache是shared pool中的一塊區域,用於保持查詢的結果集
已經試驗過, 表的行數有更改時,V$RESULT_CACHE_OBJECTS.STATUS變成了Invalid ,也就是說Result Cache使用的一個前提:目標資料表不怎麼變化。
DBMS_SHARED_POOL.KEEP
This procedure keeps an object in the shared pool. Once an object has been kept in the shared pool, it is not subject to aging out of the pool. This may be useful for frequently used large objects.
此過程將物件保留在共享池中。 一旦物件保留在共享池中,它就不會從池中老化。 這對於經常使用的大型物件可能很有用。
BUFFER_POOL
The BUFFER_POOL clause lets you specify a default buffer pool or cache for a schema object. All blocks for the object are stored in the specified cache.
When the buffer pool of an object is changed using the ALTER statement, all buffers currently containing blocks of the altered segment remain in the buffer pool they were in before the ALTER statement. Newly loaded blocks and any blocks that have aged out and are reloaded go into the new buffer pool .
The NOCACHE clause has no effect on a table in the KEEP cache .
BUFFER_POOL子句允許您為架構物件指定預設緩衝池或快取。 物件的所有塊都儲存在指定的快取中。
當使用ALTER語句更改物件的緩衝池時,當前包含已更改段的塊的所有緩衝區都保留在ALTER語句之前的緩衝池中。 新載入的塊和已經老化並重新載入的任何塊都將進入新的緩衝池 。
NOCACHE子句對KEEP快取中的表沒有影響 。
CACHE
For data that is accessed frequently, this clause indicates that the blocks retrieved for this table are placed at the most recently used end of the least recently used (LRU) list in the buffer cache when a full table scan is performed. This attribute is useful for small lookup tables .
對於經常訪問的資料,此子句指示在執行全表掃描時,為此表檢索的塊放置在緩衝區快取記憶體中最近最少使用(LRU)列表的最近使用的末尾。 此屬性對小型查詢表很有用 。
RESULT_CACHE
Use this clause to determine whether the results of statements or query blocks that name this table are considered for storage in the result cache.
When users execute queries and functions repeatedly, the database retrieves rows from the cache, decreasing response time. Cached results become invalid when data in dependent database objects is modified.
使用此子句可確定是否將用於命名此表的語句或查詢塊的結果視為儲存在結果快取中。
當使用者重複執行查詢和函式時,資料庫將從快取中檢索行,從而縮短響應時間。 當修改依賴資料庫物件中的資料時, 快取結果將變為無效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2219124/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 幾百萬資料放入記憶體不會把系統撐爆嗎?記憶體
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- 【記憶體資料庫】TimesTen記憶體資料庫
- 瀚高資料庫記憶體結構資料庫記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- JVM記憶體結構、Java記憶體模型和Java物件模型JVM記憶體Java模型物件
- 磁碟資料庫與記憶體資料庫的特點比較資料庫記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- JVM記憶體模型總結JVM記憶體模型
- 物件記憶體圖物件記憶體
- 從Oracle資料庫故障到AIX記憶體管理Oracle資料庫AI記憶體
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- ABAP Memory Inspector 裡對動態記憶體物件的記憶體消耗度量方式記憶體物件
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 遊戲記憶體對比普通記憶體區別 遊戲記憶體和普通記憶體相差大嗎?遊戲記憶體
- 自動記憶體管理機制_執行時資料區域記憶體
- JVM記憶體管理——總結篇JVM記憶體
- 淺談JVM記憶體結構 和 Java記憶體模型 和 Java物件模型JVM記憶體Java模型物件
- Java物件記憶體模型Java物件記憶體模型
- Java 物件記憶體分析Java物件記憶體
- 記憶體資料庫解析與主流產品對比(二)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(一)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(三)記憶體資料庫
- C++記憶體物件大會戰 禁止產生堆物件 禁止產生棧物件C++記憶體物件
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- Java常見知識點彙總(⑱)——Jvm記憶體結構、Java記憶體模型、Java物件模型的區別JavaJVM記憶體模型物件
- 【虹科分享】Redis 不僅僅是記憶體資料庫Redis記憶體資料庫
- 記憶體結構記憶體
- 記憶體耗盡後Redis會發生什麼記憶體Redis
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Java記憶體區域(執行時資料區域)和記憶體模型(JMM)Java記憶體模型
- iOS開發筆記— 資料庫、Crash、記憶體問題分析iOS筆記資料庫記憶體
- JVM之記憶體區域總結JVM記憶體
- linux記憶體管理學習總結Linux記憶體
- Java記憶體模型學習總結Java記憶體模型
- python物件的記憶體佔用Python物件記憶體