在12c的In-Memory Option選件之中,數(shù)據(jù)在內(nèi)存的獨立區(qū)域中按照列式存儲,數(shù)據(jù)是被壓縮存放的,內(nèi)存與列式壓縮可以極大提升查詢的性能,下圖是IMO的示意圖:
接下來我們來驗證一下列存的壓縮比率和查詢性能。
首先查看IMO的內(nèi)存分配情況,初始啟動數(shù)據(jù)庫,可以看到1MB Pool分配了大約3M的內(nèi)存空間:
接下來將一張數(shù)據(jù)表設置到內(nèi)存中,并且通過查詢加載:
在加載過程中,內(nèi)存使用增加,直至完成:
由此我們可以根據(jù)數(shù)據(jù)表的大小和內(nèi)存分配空間,計算出內(nèi)存列式壓縮的比率。BILL表共使用內(nèi)存大約300M:
SQL> select (313524224 + 720896 + 3145728)/1024/1024 MB from dual;
MB
----------
302.6875
而該表在行式存儲上占用了 952 MB:
SQL> select bytes/1024/1024 MB from DBA_segments where segment_name='BILL';
MB
----------
952
這意味著使用列存,使得存儲空間壓縮到了原來的30%,這是一個計費的測試數(shù)據(jù)表,在使用IMO查詢,全表掃描僅用了80ms就完成了查詢:
在以下測試中,我們創(chuàng)建一個非IMO對象,基于一個字段進行Distinct查詢,在查詢結(jié)果中,響應時間分別為1320 ms和70 ms,也有19倍的響應差距:
以下是執(zhí)行計劃及邏輯讀等統(tǒng)計信息輸出:
Copyright? 2012-2013 TATAIT.COM All Rights Reserved 深圳塔塔咨詢服務有限公司 版權(quán)所有 深圳網(wǎng)站建設:沙漠風
塔塔IT—高端IT培訓領(lǐng)導品牌,專注于IT前沿技術(shù)的傳播與應用。專業(yè)創(chuàng)造價值,服務贏得口碑!