.jpg)
為Oracle 12c 數據庫的 In-Memory 功能做 PoC,其目的在于充分展現 In-Memory 的優勢,同時又要盡量少地影響客戶環境。今天和大家聊聊做 In-Memory PoC 時應遵循的一些核心步驟。
Oracle Database 12c In-Memory 工作方式:
.jpg)
為展現 In-Memory 的優勢同時盡量少地影響客戶環境,做 PoC 時應遵循如下基本步驟:
1)確定數據庫 In-Memory的最佳工作負載
應用 In-Memory:分析型工作負載獲益相對多,OLTP 型工作負載獲益相對少。
2)應用最新的In-Memory補丁包(Bundle Patch)
•最好的著手點是去查看 Note:1937782.1中的最新信息
•補丁24448103就是最新的20161018補丁包,記錄在 Note: 20879108.8 中
3)內存分配
SGA_TARGET = SGA_TARGET(baseline) + INMEMORY_SIZE
不要忽略 Program Global Area (PGA)
4)數據庫參數設置
•從init.ora參數取缺省值入手
•不設置任何下劃線參數
•參數 INMEMORY_SIZE:為設基線而將其初置為 0,然后再根據所需的對象空間進行設置。 注意:正確設置此值可能需要一個迭代的過程
•參數 PARALLEL_DEGREE_POLICY 應該設置為 AUTO。對 RAC 環境說來,這是必需的。
5)測試開始前的準備工作
核實內存分配狀況:
•In-MemoryAdvisor – 確定測試對象已經填入
•Compressionadvisor – 估算需要添加多少內存
查看測試對象的統計信息:
•最新的統計信息
•Histograms
•ColumnGroups
•ExtendedStatistics
查看 Constraint定義
查看分區狀況
查看索引狀況
性能史:
•確定AWR正在運行并可用于 troubleshooting。 AWR還可以用于確認初始化
參數和發現異常情況
6)測試方法
第一步:創建基線
•在不帶IM列存儲的情況下運行工作負載
•Set INMEMORY_SIZE = 0
•OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES = true
•在12c環境下捕獲工作負載
•此步驟將允許在沒有數據庫 In-Memory的12c環境下捕獲基線。 這是用來進行比較的值,以驗證可以從數據庫內存中預期的性能提升。 它還應該真切地反映客戶應用當前的性能,如果不能反映客戶應用當前的性能,我們就得停下來找原因了。 必須從可接受的基線開始,不然該測試系統就可能有其他問題。
第二步:將表放入 In-Memory
•分配IM列存儲
•設置INMEMORY_SIZE參數并重新啟動數據庫
•將需要測試的表放到IM列存儲中
•驗證是否全部對象都已經放入IM列存儲中
第三步:在啟用了In-Memory 的情況下運行工作負載
•運行工作負載
第四步:SQL計劃基線進化
•SQL計劃基線進化
•這將允許優化器使用性能比當前基線執行計劃更好的執行計劃
•此乃具有關鍵意義的一步!
•允許使用最好的執行計劃,防止性能下降
•使用dbms_spm包的進化(evolve)任務函數
第五步:最終工作負載執行
•再次運行工作負載
•將新舊已用時進行比較
•最終結果可以展示最佳的性能
最終結果:使用In-Memory,分析型查詢性能提高 7 – 128 倍!
.jpg)
【文章來源:Oracle官網】