7.Oracle深度学习笔记——内存架构之SGA IM Column Store
2016-01-27 23:45
323 查看
7.Oracle深度学习笔记——内存架构之SGA IM Column Store
欢迎转载,转载请标明出处: http://blog.csdn.net/notbaron/article/details/50597341
从12.1.0.2开始,内存列存储是可选项。在SGA中分配一块空间用于列格式存储表、分区实现快速扫描。不是BUFFER CACHE的替代,而是一个补充。
相同的数据可以同时存储在BUFFERCACHE和内存列存储空间中。默认,只有指定为INMEMORY的DDL才会存储在IM 列存储中。
数据库会保证列格式的数据和BUFFERCACHE的数据交易的一致性。不用用户担心。
n 使用操作符=,< ,>和IN 来扫描很多行
n 从一个表中查询一组子列,例如从100列中选择其中5列
n 通过转换小维度表的谓词来过滤大的事实表的连接
商务应用,热点分析查询,数据库仓库复杂可以收益很多。而纯粹的OLTP数据库交易获益很少。
IM 列存储也提供了一下优点:
l 所有存在的数据库特点都支持,包括HA
l 不需要改变应用
l 配置简单(只需要配置初始化参数INMEMORY_SIZE)
l 压缩优化来提升查询性能
l 需要很少的索引,物化视图,和OLAP 矩阵
数据同时保存在两种格式下。
IM支持磁盘上存储的各种表格式,也不会 影响UNDO,REDO等。
数据库执行DML修改,可以无视IM 列存储。
数据库使用给内部机制跟踪改变,确保IM列存储和当前数据块保持一致。
默认,在RAC中,内存表分布在数据块实例中。 默认NODUPLICATE 语句表示一个对象已有一个副本。
DUPLICTE ALL语句表示每个内存表在每个实例中都有存在
DUPLICATE 语句表示存在两本副本。
l 压缩格式可以降低每列需要处理的内存总量,SQL可以直接执行在压缩列上
l 数据库使用SIMD 向量指令在一个CPU时钟周期中处理一组列值。在一个VECTOR上存储很多值,可以最大的利用SIMD处理性能
可以在CREATE和ALTER语句的子句中使用MEMCOMPRESS语句来选择不同的压缩方式。
默认压缩选择MEMCOMPRESS FORQUERY LOW,提供了最快读,不需要解压数据。
其他压缩,例如FOR QUERY HIGH和FOR CAPACITY,使用不同的压缩等级,有些需要解压。
在存储一个表到IM列表的时候,可以使用
DBMS_COMPRESSION.GET_COMPRESSION_RATIO来报告压缩比例,来评估需要的空间。
IM 列压缩和 混合列压缩有点相近。 都需要处理一组列。主要区别是, IM列存储的列向量针对内存存储优化过,而混合压缩的列向量为磁盘存储优化过。
如果使用BUFFER CACHE,典型的数据库先要扫描索引找到需要的ROWID,然后从磁盘获取该行到BUFFER CACHE,然后抛弃不要的列值。使用IM列存储,可以直接扫描需要的列。
欢迎转载,转载请标明出处: http://blog.csdn.net/notbaron/article/details/50597341
从12.1.0.2开始,内存列存储是可选项。在SGA中分配一块空间用于列格式存储表、分区实现快速扫描。不是BUFFER CACHE的替代,而是一个补充。
相同的数据可以同时存储在BUFFERCACHE和内存列存储空间中。默认,只有指定为INMEMORY的DDL才会存储在IM 列存储中。
数据库会保证列格式的数据和BUFFERCACHE的数据交易的一致性。不用用户担心。
1. IM列存储好处
主要使用地方:n 使用操作符=,< ,>和IN 来扫描很多行
n 从一个表中查询一组子列,例如从100列中选择其中5列
n 通过转换小维度表的谓词来过滤大的事实表的连接
商务应用,热点分析查询,数据库仓库复杂可以收益很多。而纯粹的OLTP数据库交易获益很少。
IM 列存储也提供了一下优点:
l 所有存在的数据库特点都支持,包括HA
l 不需要改变应用
l 配置简单(只需要配置初始化参数INMEMORY_SIZE)
l 压缩优化来提升查询性能
l 需要很少的索引,物化视图,和OLAP 矩阵
2. 两种内存格式(列和行)
获取数据的时候,可以从IM列存储也可以从BUFFERCACHE中获取。数据同时保存在两种格式下。
IM支持磁盘上存储的各种表格式,也不会 影响UNDO,REDO等。
数据库执行DML修改,可以无视IM 列存储。
数据库使用给内部机制跟踪改变,确保IM列存储和当前数据块保持一致。
3. IM 列填充
IM 列存储中的数据可以在启动时候填充也可以在访问时候填充。根据是否使用RAC算法存在一些差异。默认,在RAC中,内存表分布在数据块实例中。 默认NODUPLICATE 语句表示一个对象已有一个副本。
DUPLICTE ALL语句表示每个内存表在每个实例中都有存在
DUPLICATE 语句表示存在两本副本。
4. 列压缩
IM 列存储使用特殊的压缩格式来优化访问速度。主要有以下两点:l 压缩格式可以降低每列需要处理的内存总量,SQL可以直接执行在压缩列上
l 数据库使用SIMD 向量指令在一个CPU时钟周期中处理一组列值。在一个VECTOR上存储很多值,可以最大的利用SIMD处理性能
可以在CREATE和ALTER语句的子句中使用MEMCOMPRESS语句来选择不同的压缩方式。
默认压缩选择MEMCOMPRESS FORQUERY LOW,提供了最快读,不需要解压数据。
其他压缩,例如FOR QUERY HIGH和FOR CAPACITY,使用不同的压缩等级,有些需要解压。
在存储一个表到IM列表的时候,可以使用
DBMS_COMPRESSION.GET_COMPRESSION_RATIO来报告压缩比例,来评估需要的空间。
IM 列压缩和 混合列压缩有点相近。 都需要处理一组列。主要区别是, IM列存储的列向量针对内存存储优化过,而混合压缩的列向量为磁盘存储优化过。
5. IM列存储的扫描优化
列格式使得查询只要扫描需要的例。如果使用BUFFER CACHE,典型的数据库先要扫描索引找到需要的ROWID,然后从磁盘获取该行到BUFFER CACHE,然后抛弃不要的列值。使用IM列存储,可以直接扫描需要的列。
相关文章推荐
- oracle数据库常用函数
- oracle with as介绍
- ORA-12537: TNS:connection closed
- oracle数据库错误1067
- 修改Oracle字符集
- Oracle客户端(32bit)配置
- oracle中动态SQL使用详细介绍
- oracle中动态SQL使用详细介绍
- oracle的cardinality feedback
- ORACLE隐式类型转换
- ORACLE表空间和表碎片分析及整理方法
- Oracle内存结构
- 如何将Oracle数据库中的数据导入到hbase中 使用 Sqoop工具
- ORACLE中对版本和补丁的说明
- oracle undo 复杂度--oracle核心技术读书笔记四
- ORACLE PILE 与 SPFILE
- oracle模糊查询用法
- Oracle导出导入指定表
- Oracle导出导入指定表
- oracle 11g duplicate active database 建立物理DG