eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 贺 恩墨学院OCM认证100人100%一次性取得认证 | Blog首页 | Oracle 12c新特性:IN-Memory Option - 列存与压缩 »

Oracle 12c新特性:IN-Memory Option - 缓存与参数
modb.pro

2014年6月,在Oracle 12c的12.1.0.2版本中,Oracle正式发布和引入了基于内存和列式计算的In-Memory Option (以下简称IMO),这距离Larry在2013年OOW上发布这一特性已经过去了近10个月。

2014年7月22日,Oracle正式提供了12.1.0.2版本的数据库产品下载,可以通过:

https://edelivery.oracle.com/ 

下载该产品的最新版本。

OTN上,Oracle也随后发布了下载链接:

12c020.png

下图是IMO特性的原理图,通过在内存中开辟一块独立的区域,Oracle将指定的表或者分区以列式内存存储,但是在存储上,仍然以一份行式存储,这就需要额外的内存空间。

inmemorycolumn.png

当然,内存对于Oracle来说从来都不是问题,为了配合IMO特性,Oracle此前已经推出了SuperCluster M6-32一体机,该服务器满配可以配置32 TB内存,这是一个内存快速扩展的时代:

supercluster632.png

我们来看一下Oracle广为关注的这一新特性的表现。

IMO的缺省的参数有:

SQL> select name from v$parameter where name like '%inmemory%';

NAME

------------------------------

inmemory_size

inmemory_clause_default

inmemory_force

inmemory_query

inmemory_max_populate_servers

在数据库启动时,可以看到SGA中分配的Inmemory Area区域:

SQL> show sga

Total System Global Area 2147483648 bytes

Fixed Size     2917936 bytes

Variable Size   402655696 bytes

Database Buffers 1191182336 bytes

Redo Buffers   13856768 bytes

In-Memory Area   536870912 bytes

启用IMO特性,需要设置inmemory_size参数,指定可以作为内存列存的内存区域,该参数为静态参数,以下语句将该内存指定为800M,重启数据库使得该参数失效:

SQL> alter system set inmemory_size=800M scope=spfile;

System altered.

除此之外,另外一个关键参数是:inmemory_max_populate_servers 。该参数设置用于将数据加载到内存的后台进程数量。以下将该参数设置为2 :

SQL> alter system set inmemory_max_populate_servers=2;

System altered.

此后可以通过在表或者分区级别设置INMEMORY选项,将该表数据设置存储在内存中:

SQL> alter table accbill inmemory;

Table altered.

以下通过测试来演示一下IN-Memory表的查询性能,以下执行计划中的INMEMORY意味着这是一个IMO查询,逻辑读仅为7,较常规表大大缩减:

inmemory.png

如果我们将该表移出IMO内存,可以看到其逻辑读变成了4076,执行效率也肯定大大下降:

noinmemory.png

通过视图V$INMEMORY_AREA可以查询内存区域的使用情况,其中USED_BYTES表明当前已经使用的内存:

inmemoryarea.png

注意,V$INMEMORY_AREA中的POPULATE_STATUS代表了当前数据向内存中加载的进度,在Done之前的查询不能充分使用内存列式运算。

populating.jpg

如果内存设置不足以容纳指定的数据表,则状态会显示为"OUT OF MEMORY",这就需要去增加内存设置,或者减少Cache的对象数量。

 


历史上的今天...
    >> 2019-07-23文章:
    >> 2015-07-23文章:
    >> 2012-07-23文章:
    >> 2009-07-23文章:
    >> 2008-07-23文章:
    >> 2007-07-23文章:
    >> 2005-07-23文章:
           什么是无法跨越的?

By eygle on 2014-07-23 08:21 | Comments (0) | OraNews | Oracle12c/11g | 3155 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com