當前位置:
首頁 > 最新 > Oracle Database 12c In-Memory特性之執行計劃對比

Oracle Database 12c In-Memory特性之執行計劃對比

DBIM(DatabaseIn-Memory)是Oracle12c資料庫的選項,類似於RAC,ADG。

DBIM能夠實現對混合類型應用的支持,傳統的以行形式保存的數據滿足OLTP應用,列形式保存的數據滿足以查詢為主的OLAP應用。IM組件可以和其他資料庫組件功能使用像Sybase IQ, SAP HANA,並不需要用戶單獨開發或者修改應用程序,就可以非常方便的實現基於實時資料庫分析的轉變

主要目的是利用內存的速度和優化的列格式來加速分析

DBIM的預設的參數有:

inmemory_size big integer 0

默認是不開啟的。

DBIM在內存中需要預留空間,屬於SGA中的靜態池分,是純列式存儲。列存儲不會取代緩衝區緩存,而是作為一種補充,以便數據現在可同時以行格式和列格式存儲在內存中。

通過INMEMORY_SIZE控制DBIM內存的大小,至少為100M,當其大於0時,啟用DBIM功能。

開啟步驟如下:

alter system set inmemory_size=200M scope=spfile sid="*";

重啟資料庫

在資料庫啟動時,可以看到SGA中分配的Inmemory Area區域。

建一張測試表:

create table tab_inmas select * from dba_objects;

將該表數據設置存儲在內存中

SQL> alter table tab_inm inmemory;

Table altered.

SQL> SET AUTOTRACE on

不在inmemory執行計劃如下:

視圖V$INMEMORY_AREA可以查詢內存區域的使用情況,其中USED_BYTES表明當前已經使用的內存:

從上邊的執行計劃看,使用in-memory效果還是比較明顯的。

In-Memory需要注意如下及不支持:

1、索引組織表(IOT)和集群表

2、LONG何out-of-line LOB也不支持

12.2之前不支持在ADG的standby實例中使用

另外,需要注意如下2點:

(1)該特性不支持SYS用戶下的對象,不支持SYSTEM、SYSAUX表空間下的對象

(2)Objects that are smaller than 64KB are not populated into memory

如果要支持sys用戶和sys表空間裡面的對象,需要修改隱含參數_inmemory_enable_sys為TRUE

(3)強烈建議將每個RAC節點的IM列存儲設置為相同大小。

(4)熱表、熱分區、經常訪問的列放入In-Memory


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 老杜隨筆 的精彩文章:

TAG:老杜隨筆 |