Oracle 12c In Memory Option初探
前情提要:
Oracle OpenWorld 2013中Larry Ellison爆料的Oracle新特性:Oracle In Memory Database Option
1. 这个新特性将随着12.1.0.2发布;
2. In memory database option不会取代TimesTen(以下简称TT),因为这是两种层面的产品,TT还是会架在DB层之前,和应用紧密相连,为应用提供缓存,in memory database option在DB层,可以做到高可用如RAC,DG等一些TT无法实现的架构。另外同样道理,in memory database option也不会替代Exalytics;
3.In memory database option引入了列存储
4.Oracle In-Memory Columnar Compression,提供2倍到10倍的压缩率;
5.显著增快SQL的全表扫描处理速度, 全表扫描将增快10~100倍,基于CPU的最大数据处理速度,对于简单扫描可以每秒扫描10亿行数据; 对于简单的连接过滤谓词最终选出少量数据行的达到每秒1亿条每秒;
6.显著增快事务处理,DML操作-单行DML和批量DML都将运行地更快; 单行的处理收益主要来源于降低10倍的索引维护;
7.100%的应用程序透明。类似于OLTP压缩,主要的优势在于对于应用而言完全透明。所有的其他ORACLE特性均将可以与in-memory option一起工作,包括partitioning, indexes, text indexes,而没有明确的数据类型或者存储类型限制。
最近,Oracle12.1.0.2发布了,下载地址:
目前只有Linux和Solaris版本。
安装Linux虚拟机和Oracle12.0.1.2,参考以下链接(在此非常感谢潇湘隐者):
http://www.cnblogs.com/kerrycode/archive/2013/09/13/3319958.html
环境Ready后,研究下Oracle 官方的技术说明:
大致整理了下:
1.Row Format vs. Column Format
Oracle Database In-Memory (Database In-Memory) provides the best of both worlds by allowing data
to be simultaneously populated in both an in-memory row format (the buffer cache) and a new inmemory
column format.
Note that the dual-format architecture does not double memory requirements. The in-memory
column format should be sized to accommodate the objects that must be stored in memory, but the
buffer cache has been optimized for decades to run effectively with a much smaller size than the size
of the database. In practice it is expected that the dual-format architecture will impose less than a 20%
overhead in terms of total memory requirements. This is a small price to pay for optimal performance
at all times for all workloads.
同时支持Row Format vs. Column Format,内存使用没有翻倍。
2.The In-Memory Column Store
Database In-Memory uses an In-Memory column store (IM column store), which is a new component
of the Oracle Database System Global Area (SGA), called the In-Memory Area. Data in the IM column
store does not reside in the traditional row format used by the Oracle Database; instead it uses a new
column format. The IM column store does not replace the buffer cache, but acts as a supplement, so
that data can now be stored in memory in both a row and a column format.
The In-Memory area is a static pool within the SGA, whose size is controlled by the initialization
parameter INMEMORY_SIZE (default 0). The current size of the In-Memory area is visible in V$SGA. As
a static pool, any changes to the INMEMORY_SIZE parameter will not take effect until the database
instance is restarted. It is also not impacted or controlled by Automatic Memory Management (AMM).
The In-Memory area must have a minimum size of 100MB.
The In-Memory area is sub-divided into two pools: a 1MB pool used to store the actual column
formatted data populated into memory, and a 64K pool used to store metadata about the objects that
are populated into the IM column store. The amount of available memory in each pool is visible in the
V$INMEMORY_AREA view. The relative size of the two pools is determined by internal heuristics, the
majority of the In-Memory area memory is allocated to the 1MB pool.
SGA区增加了一个新组件:In-Memory Area,静态池,大小通过参数InMemory_Size(默认0)控制,修改后必须重启数据库生效。
最小值100M,其内部包含两个池:
1MB pool :存储内存中实际的列格式数据
64K pool:内存列存储涉及对象的元数据MetaData
3. Populating The In-Memory Column Store 添加到内存列存储
Database In-Memory adds a new INMEMORY attribute for tables and materialized views. Only objects with the
INMEMORY attribute are populated into the IM column store. The INMEMORY attribute can be
specified on a tablespace, table, (sub)partition, or materialized view.
增加INMEMORY选项,支持表空间、表、分区、物化视图
1.表空间级别设置INMEMORY,表空间下所有新的表、物化视图将被加载到内存列存储中。
If it is enabled at the tablespace
Oracle Database In-Memory option 5 level, then all new tables and materialized views in the tablespace will be enabled for the IM column
store by default.
ALTER TABLESPACE ts_data INMEMORY;
2. 表级别设置INMEMORY,支持排除指定的列、支持表的分区
ALTER TABLE sales INMEMORY;
ALTER TABLE sales INMEMORY NO INMEMORY(prod_id);
for a partitioned table, all of the table's partitions inherit the in-memory attribute but it’s
possible to populate just a subset of the partitions or sub-partitions.
ALTER TABLE sales MODIFY PARTITION SALES_Q1_1998 NO INMEMORY;
3.支持内存加载优先级配置
ALTER TABLE customers INMEMORY PRIORITY CRITICAL;
4.同时还有一些限制,不是所有的表都可以加载到内存列存储中
Sys用户、Systemn、SysAux表空间下的对象不能使用INMEMORY选项,
索引组织表、聚集表不能使用INMEMORY选项
不支持的数据类型:LONGS (deprecated since Oracle Database 8i); Out of line LOBS
同时对象如果小于64K,考虑到内存空间消耗,将不会加载到内存列存储中。
5. In-Memory Compression 内存压缩
然后本文第二大部分:基于上述特性,进行了实际业务数据测试。
从上述测试的情况看,虽然是虚拟机环境,但是测试了多次。
从测试结果看,大批量Insert和Update的性能有所下降,大批量Delete性能有所提升,查询性能提升还是非常明显,如果内存足够,估计会再有提高。
Oracle 12c In Memory Option初探的更多相关文章
- oracle 12c 列式存储 ( In Memory 理论)
随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用:列形式保存的数据满足以 ...
- Oracle 12C 新特性之 恢复表
RMAN的表级和表分区级恢复应用场景:1.You need to recover a very small number of tables to a particular point in time ...
- ORACLE 12C新特性——CDB与PDB
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库( ...
- Oracle 12c CDB PDB 安装/配置/管理
Oracle安装参考:https://www.cnblogs.com/zhichaoma/p/9288739.html 对于CDB,启动和关闭与之前传统的方式一样,具体语法如下: STARTU ...
- Oracle 12c RAC 静默安装文档
参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...
- oracle 12c直方图收集的增强
在oracle 12c之前,收集直方图信息是相对比较耗费资源的,因为要重复扫描几次:在oracle 12c中,则有较大的提升,具体可参考https://jonathanlewis.wordpress. ...
- Oracle 12C -- clone a non-cdb as a pdb
将non-CDB置为只读模式: $ sqlplus '/as sysdba' SQL> select name, decode(cdb, 'YES', 'Multitenant Option e ...
- Oracle 12c 搭建学习
Oracle 12c 搭建学习 Vm workstaton10 安装linux 6.4 安装oracle12c Oracle 12c只支持64位系统 1 环境检查 [root@rac1 ~]# gre ...
- oracle 12c show con_name
今天安装了一个oracle 12c的数据库做测试,在运行一个很简单的命令时出错了: SQL> show con_name concat "." (hex 2e) SP2: u ...
随机推荐
- python endswith和startwith
转载:http://blog.sina.com.cn/s/blog_5dd2af0901012rmn.html 做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束.Python为此提供了 ...
- [Android]用图库打开指定的文件夹,没错是第一个画面直接是图库的文件夹画面
参考了这个里面的代码 http://bbs.csdn.net/topics/380084274 一直报错 06-16 23:58:50.698 26148-26161/com.example.myap ...
- vim基本命令
vim基本命令 1.vim#在命令行中输入vim,进入vim编辑器2.i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行 ...
- node.js中module.export与export的区别。
对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports ...
- 中國區的代理協議的韓國遊戲廠商PatiGames
“與阿裏巴巴簽署旗下游戲「突突三國」在中國區的代理協議的韓國遊戲廠商PatiGames決定與阿裏巴巴終止合作.”相信這條前不久報導的新聞,很多人並不陌生,但這背後其實並不像表面那樣簡單.早在今年4月P ...
- MySQL优化性能my.cnf详解
提供一个MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件(点击这里下载文件): [client] port=3306 socket=/tmp/mysql.sock [mysqld] ...
- 企业app分发
http://beyondvincent.com/2014/07/30/2014-07-30-provision-ios-ipa-app-for-in-house-enterprise-distrib ...
- 软件测试基础homework3
//本次的作业为/******************************************************* * Finds and prints n prime integers ...
- WordPress忘记登录密码
后台的登录密码使用的是md5加密的,有时候会忘记登录密码,那么可以修改数据库,把密码改为你知道的字符串的md5加密值 如 hello对应的md5加密值为:5d41402abc4b2a76b9719d9 ...
- 总结:客户端与服务器端使用正则增加URL参数的方法
先说服务器端的: C#版本 #region URL参数操作 /// <summary> /// URL参数操作 /// </summary> public class UrlP ...