?
.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中的最新信息
?⒉苟?4448103就是最新的20161018补丁包,记录在 Note: 20879108.8 中
3)内存分配
SGA_TARGET = SGA_TARGET(baseline) + INMEMORY_SIZE
不要忽略 ?Program Global Area (PGA)
4)数据库参数设置
?⒋?nit.ora参数取缺省值入手
?⒉簧柚萌魏蜗禄?卟问?/p>
?⒉问 INMEMORY_SIZE:为设基线而将其初置为 0,然后再根据所需的对象空间进行设置。 注意:正确设置此值可能需要一个迭代的过程
?⒉问 PARALLEL_DEGREE_POLICY 应该设置为 AUTO。对 RAC 环境说来,这是必需的。
?
5)测试开始前的准备工作
核实内存分配状况:
??n-MemoryAdvisor ?? 确定测试对象已经填入
??ompressionadvisor ?? 估算需要添加多少内存
?
查看测试对象的统计信息:
?⒆钚碌耐臣菩畔?/p>
??istograms
??olumnGroups
??xtendedStatistics
?
查看 Constraint定义
查看分区状况
查看索引状况
性能史:
?⑷范?WR正在运行并可用于 troubleshooting。 AWR还可以用于确认初始化
参数和发现异常情况
?
6)测试方法
第一步:创建基线
?⒃诓淮?M列存储的情况下运行工作负载
??et INMEMORY_SIZE = 0
??PTIMIZER_CAPTURE_SQL_PLAN_BASELINES = true
?⒃?2c环境下捕获工作负载
?⒋瞬街杞?市碓诿挥惺?菘 In-Memory的12c环境下捕获基线。 这是用来进行比较的值,以验证可以从数据库内存中预期的性能提升。 它还应该真切地反映客户应用当前的性能,如果不能反映客户应用当前的性能,我们就得停下来找原因了。 必须从可接受的基线开始,不然该测试系统就可能有其他问题。
?
第二步:将表放入 In-Memory
?⒎峙?M列存储
?⑸柚?NMEMORY_SIZE参数并重新启动数据库
?⒔?枰?馐缘谋矸诺?M列存储中
?⒀橹な欠袢?慷韵蠖家丫?湃?M列存储中
?
第三步:在启用了In-Memory ?的情况下运行工作负载
?⒃诵泄ぷ鞲涸?/p>
?
第四步:SQL计划基线进化
??QL计划基线进化
?⒄饨?市碛呕?魇褂眯阅鼙鹊鼻盎?咧葱屑苹??玫闹葱屑苹?/p>
?⒋四司哂泄丶?庖宓囊徊剑?/p>
?⒃市硎褂米詈玫闹葱屑苹??乐剐阅芟陆?/p>
?⑹褂?bms_spm包的进化(evolve)任务函数
?
第五步:最终工作负载执行
?⒃俅卧诵泄ぷ鞲涸?/p>
?⒔?戮梢延檬苯?斜冉?/p>
?⒆钪战峁?梢哉故咀罴训男阅?/p>
?
最终结果:使用In-Memory,分析型查询性能提高 7 ?? 128 倍!
.jpg)
?
?
?
?
?
?
?
【文章来源:Oracle官网】
?
?
?
?
?
?
?