Oracle 12c In-Memory Option - 5

tolywang發表於2014-02-14

Lesson 2: In-Memory Column Store Tables

11. 對比In-Memory Column Store與buffer cache
set timing ON
 
 -- 全表掃描一個3億筆記錄的大表。
SELECT Max(lo_ordtotalprice) most_expensive_order FROM lineorder;

 -- 在buffer cache中訪問 
ALTER SESSION set inmemory_query = disable;
SELECT /* BUFFER CACHE */
Max(lo_ordtotalprice) most_expensive_order FROM lineorder;

 -- 不要忘記改回enable .
ALTER SESSION set inmemory_query = enable;

雖然兩者都是記憶體掃描,但是可以得到結論,在In-Memory Column Store中查詢比
在傳統的 buffer cache中要快。

In-Memory Column Store僅僅需要掃描單一一個列lo_ordtotalprice,而row store
(行儲存)不得不掃描每一行中的所有columns, 直到reaches lo_ordtotalprice列。
我們也從出色的壓縮比中受益,對於SIMD vector processing, 柱狀格式不需要額外
的操作。

一般我們都是透過執行計劃來檢視SQL如何執行的。如果查詢In-Memory Column Store Table,
那麼執行計劃中會顯示 TABLE ACCESS IN MEMORY FULL 字樣。 不過有很少的情況下,即使
object被標識為 IN MEMORY, 但是我們不能使用  In-Memory Column Store 。 這些就好比
在Exadata環境如何使用STORAGE 。

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

相關文章