Oracle

透過Oracle 12c In-Memory機制加快大量資料的運算

蔡志隆 2018/10/29 21:13:05
3406

透過Oracle 12c In-Memory機制加快大量資料的運算


簡介

In-Memory列儲存元件,為12c 中SGA的可選元件。可以用來儲存表、表分割槽、以及其他資料庫物件的副本。啟用該選項,我們可以在SGA中按列儲存某些物件,而不是原來的按行儲存

作者

蔡志隆


Step 1、安裝Oracle 12c

 Oracle In-Memory技術於 Oracle Database 12.1.0.2版以後才有支援。所以請先至Oracle官網下載12.1.0.2版。
連結:
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-win64-download-2297732.html
 
本例以安裝在Windows x64環境下,下圖紅色框部份二個皆下載完成。
 
 
 下載完成後開始安裝Orcle database,依照安裝程式步驟設定安裝路徑和系統管理員密碼後進行安裝並完成。

Step 2、開啟Oracle SQL Developer連線DB

點連線的按鈕,輸入連線名稱、使用者名稱、密碼、、主機名稱(localhost)、角色和SID等。Oracle預設的帳號是SYS(無大小寫之分)。密碼則輸入當初安裝Oracle時設定的管理密碼。
因為SYS帳號屬於管理者,所以角色要選擇SYSDAB。

Step3、開始設定In-Memory

輸入「show parameter inmemory」確認是否有開啟In-Memory功能。
inmemory_size數值為「0」代表In-Memory功能未開啟。
 
輸入「 select name, value from v$sga; 」確認SGA(System Global Area,共享記憶體)分配狀況。
 
SGA目前所分配的記憶體為:8922136+553651176+1979711488+7852032 = 2550136832(約2.49GB)
 
取得目前資訊後,可以開啟來啟動In-Memory功能
 
假設要配制1G的記憶體給In-Memory使用
 
輸入「ALTER SYSTEM SET inmemory_size = 1G scope=Spfile;」擴充SGA從原本的2.49G+1G=3.5G
 
輸入「ALTER SYSTEM SET sga_target = 4G scope=spfile;」
 
最後,重新啟動讓In-Memory功能生效
 
在command mode下輸入「sqlplus / as sysdba」 
輸入「shutdown immediate;」
輸入「startup;」
 輸入「  show parameter inmemory;
確認In-Memory是否已啟動
成功的話會顯示剛剛設定「1G」的Size
 到目前僅是開啟In-Memory的功能
 
輸入「
 
SELECT table_name,
       inmemory,
       inmemory_priority,
       inmemory_distribute,
       inmemory_compression,
       inmemory_duplicate  
FROM   user_tables
ORDER BY table_name;
 
查詢哪些Table有使用In-Memory。
 
 上圖中紅色部份INMEMORY皆為DISABLED是還是針對哪個TABLE做In-Memory功能。
 
我們針對ACLMV$ TABLE開啟In-Memory功能。
 
輸入「ALTER TABLE ACLMV$ INMEMORY PRIORITY HIGH;」
 
再次查詢後ACLMV$ TABLE已開啟In-Memory功能了
 做第一次查詢時比較無感,但查詢第二次、第三次或做複雜的查誤時速度就比較有感了。
 
最後,對於CREATE TABLE的時候要開啟In-Memory功能時加上「INMEMORY」,語法如下:
 
CREATE TABLE (
id varchar(10),
name varchar(50)
) INMEMORY;
 
蔡志隆