2014年6月,在Oracle 12c的12.1.0.2版本中,Oracle正式發(fā)布和引入了基于內(nèi)存和列式計算的In-Memory Option (以下簡稱IMO),這距離Larry在2013年OOW上發(fā)布這一特性已經(jīng)過去了近10個月。
2014年7月22日,Oracle正式提供了12.1.0.2版本的數(shù)據(jù)庫產(chǎn)品下載,可以通過:
下載該產(chǎn)品的最新版本。
在OTN上,Oracle也隨后發(fā)布了下載鏈接:
下圖是IMO特性的原理圖,通過在內(nèi)存中開辟一塊獨立的區(qū)域,Oracle將指定的表或者分區(qū)以列式內(nèi)存存儲,但是在存儲上,仍然以一份行式存儲,這就需要額外的內(nèi)存空間。
當然,內(nèi)存對于Oracle來說從來都不是問題,為了配合IMO特性,Oracle此前已經(jīng)推出了SuperCluster M6-32一體機,該服務(wù)器滿配可以配置32 TB內(nèi)存,這是一個內(nèi)存快速擴展的時代:
我們來看一下Oracle廣為關(guān)注的這一新特性的表現(xiàn)。
IMO的缺省的參數(shù)有:
SQL> select name from v$parameter where name like '%inmemory%';
NAME
------------------------------
inmemory_size
inmemory_clause_default
inmemory_force
inmemory_query
inmemory_max_populate_servers
在數(shù)據(jù)庫啟動時,可以看到SGA中分配的Inmemory Area區(qū)域:
SQL> show sga
Total System Global Area 2147483648 bytes
Fixed Size 2917936 bytes
Variable Size 402655696 bytes
Database Buffers 1191182336 bytes
Redo Buffers 13856768 bytes
In-Memory Area 536870912 bytes
啟用IMO特性,需要設(shè)置inmemory_size參數(shù),指定可以作為內(nèi)存列存的內(nèi)存區(qū)域,該參數(shù)為靜態(tài)參數(shù),以下語句將該內(nèi)存指定為800M,重啟數(shù)據(jù)庫使得該參數(shù)失效:
SQL> alter system set inmemory_size=800M scope=spfile;
System altered.
除此之外,另外一個關(guān)鍵參數(shù)是:inmemory_max_populate_servers 。該參數(shù)設(shè)置用于將數(shù)據(jù)加載到內(nèi)存的后臺進程數(shù)量。以下將該參數(shù)設(shè)置為2 :
SQL> alter system set inmemory_max_populate_servers=2;
System altered.
此后可以通過在表或者分區(qū)級別設(shè)置INMEMORY選項,將該表數(shù)據(jù)設(shè)置存儲在內(nèi)存中:
SQL> alter table accbill inmemory;
Table altered.
以下通過測試來演示一下IN-Memory表的查詢性能,以下執(zhí)行計劃中的INMEMORY意味著這是一個IMO查詢,邏輯讀僅為7,較常規(guī)表大大縮減:
如果我們將該表移出IMO內(nèi)存,可以看到其邏輯讀變成了4076,執(zhí)行效率也肯定大大下降:
通過視圖V$INMEMORY_AREA可以查詢內(nèi)存區(qū)域的使用情況,其中USED_BYTES表明當前已經(jīng)使用的內(nèi)存:
注意,V$INMEMORY_AREA中的POPULATE_STATUS代表了當前數(shù)據(jù)向內(nèi)存中加載的進度,在Done之前的查詢不能充分使用內(nèi)存列式運算。
如果內(nèi)存設(shè)置不足以容納指定的數(shù)據(jù)表,則狀態(tài)會顯示為"OUT OF MEMORY",這就需要去增加內(nèi)存設(shè)置,或者減少Cache的對象數(shù)量。
Copyright? 2012-2013 TATAIT.COM All Rights Reserved 深圳塔塔咨詢服務(wù)有限公司 版權(quán)所有 深圳網(wǎng)站建設(shè):沙漠風(fēng)
塔塔IT—高端IT培訓(xùn)領(lǐng)導(dǎo)品牌,專注于IT前沿技術(shù)的傳播與應(yīng)用。專業(yè)創(chuàng)造價值,服務(wù)贏得口碑!