雲和恩墨獨家搶先測試In-Memory Option 特性!

dawn009發表於2014-08-08

20146月,在Oracle 12c12.1.0.2版本中,Oracle正式釋出和引入了基於記憶體和列式計算的In-Memory Option,這距離Larry2013OOW上釋出這一特性已經過去了近10個月。


2014
722日,Oracle正式提供了12.1.0.2版本的資料庫產品下載,在OTN上可找到


In-Memory Option
(以下簡稱IMO)是在Oracle DB 12c中新新增的選件。它支援兩種方式的資料儲存格式,即傳統的行式儲存,以及新的列式儲存(Column Store)。針對同一個資料和表,Oracle記憶體資料庫能夠同時以兩種格式進行儲存,並同時進行更新(增刪改)並保持一致性。比如增加一行資料到一張表,以列式儲存的資料也會同步更新。而透過記憶體中處理的列式資料,針對分析與報表的效能將提升100倍以上。而在解答為何新的列式儲存還能夠提升OLTP效能時,Larry解釋說它可以刪除大量原來用於統計的索引,間接提升了OLTP效能。

 

下圖是IMO特性的原理圖,透過在記憶體中開闢一塊獨立的區域,Oracle將指定的表或者分割槽以列式記憶體儲存,但是在儲存上,仍然以一份行式儲存,這就需要額外的記憶體空間。

 

IMO特性原理圖

 

當然,記憶體對於Oracle來說從來都不是問題,為了配合IMO特性,Oracle此前已經推出了SuperCluster M6-32一體機(如下圖),該伺服器滿配可以配置32 TB記憶體,這是一個記憶體快速擴充套件的時代。


Oracle SuperCluster M6-32

 

Oracle 12c新特性:IMO快取


對於Oracle廣為關注的這一新特性,雲和恩墨在第一時間進行了測試:


我們透過測試來演示一下In-Memory表的查詢效能,以下執行計劃中的INMEMORY意味著這是一個IMO查詢,邏輯讀僅為7,較常規表大大縮減:


 

如果我們將該表移出IMO記憶體,可以看到其邏輯讀變成了4076,執行效率也肯定大大下降:

 


Oracle 12c
新特性:IMO列存與壓縮


12cIn-Memory Option之中,資料在記憶體的獨立區域中按照列式儲存,資料是被壓縮存放的,記憶體與列式壓縮可以極大提升查詢的效能,下圖是IMO的示意圖:


 


接下來我們來驗證一下列存的壓縮比率和查詢效能。

首先檢視IMO的記憶體分配情況,初始啟動資料庫,可以看到1MB Pool分配了大約3M的記憶體空間:

 


接下來將一張資料表設定到記憶體中,並且透過查詢載入。在載入過程中,記憶體使用增加,直至完成:

 

由此我們可以根據資料表的大小和記憶體分配空間,計算出記憶體列式的壓縮比率。

BILL表共使用記憶體大約300M

 

而該表在行式儲存上佔用了 952 MB

 


這意味著使用列存,使得儲存空間壓縮到了原來的
30%,這是一個計費的測試資料表,在使用IMO查詢,全表掃描僅用了80ms就完成了查詢:

 


在以下測試中,我們建立一個非IMO物件,基於一個欄位進行Distinct查詢,在查詢結果中,響應時間分別為1320 ms(行存)和70 ms(列存),也有19倍的響應差距:

 

 

備註:經原作者同意,參考(引用)文章如下

蓋國強

蓋國強

孫瑞

張樂奕



雲和恩墨

國內資料服務行業領導者

整合·最佳化·諮詢

 

聯絡我們

電話:010-59003186-8019

郵件:marketing@enmotech.com

新浪微博:雲和恩墨                  騰訊微信:enmotech
   


 

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

相關文章