12 c新特性___In-Memory列式存储的总结

  

官方文档

  

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/concepts-for-the-im-column-store.html guid - 5 - a72b48a - 8427 - 41 - ae - 9220 e46042bc90c4

  

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/configuring-the-im-column-store.html guid - 8844 - c889 e381 - 4 - b77 - 8 a51 - 7 - aa6462b14d7

     

IM列柱状的格式存储编码数据:每一列是一个独立的结构。列是连续存储的优化分析查询。数据库缓冲区缓存也可以修改对象填充IM列存储。然而,传统行格式缓冲区缓存中存储数据。数据块存储行连续、优化交易。

  

当你使一个IM列存储,SGA管理数据在不同的位置:内存区域和数据库缓冲区缓存只

  

IM列存储维护表的副本,分区,和个人列在一个特殊的柱状压缩格式,优化快速扫描只

  

内存列存储意思就是内存中列式存储,每一列都是一个单独的结构,它的优点就是只需要访问表的部分列,不像数据库缓冲区缓存以传统的行格式存储数据,需要访问表的所有列。但是传统的数据库缓冲区缓存也可以修改填充在内存内存中的对象。

  

内存中列式存储特性开启后数据库启动时会在SGA中分配一块静态的内存池内存区域,用于存放以内存中列式存储的用户表。

  

内存中列式存储以一种特殊的压缩列格式维护表,分区和单个列的副本,这种格式是为快速扫描而优化的。

     

  <强>在内存内存中的数据的同步机制

  

一旦加载到在内存内存中的表涉及DML了,就需要一种机制保证在内存内存中的数据的一致性,因为DML语句的修改在内存中仅修改数据库缓冲区缓存和日志缓冲区,如何把这些修改的数据同步到在内存内存中呢.Oracle是通过事务杂志来确保数据的一致性的。如果DML语句修改的表已经存在内存中内存中,在DML提交后就把该DML的元数据比如表名的表和行号rowid记录到事务杂志》,并把该表在内存中内存中的SCN标识为过期。如果后面新的查询需要访问该表在内存中内存中的数据,就会根据该表原来在内存中内存中的数据+事务杂志+数据库缓冲区缓存进行访问

  

当然,如果DML语句不断发生的话,就会使事务日志的数据越来越多,甚至出现在内存内存中的大部分数据都是过期的旧数据,这对于内存中查询的性能伤害是很大的,所以,甲骨文定义了一个阀值过时的阈值,当在内存中旧数据的比例达到这个阀值时就会触发重新填充的过程,甲骨文默认2分钟就会检查一次是否触发了该阀值

        

内存中列式存储涉及参数

  

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/init-parameters-for-im-column-store.html guid - a67abcac c6b9 - 499 e - 8 ae0 - bd7922b239be

     

内存中列式存储涉及的视图

  

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/views-related-to-im-column-store.html guid - 2 - ebf8d9b fa9e - 4 -地区- 8934 - 5908 - e6018d4e

        

  <强>关于内存的一些总结

  

1,数据库级别启用内存中的列式存储的两个前提条件:MEMORY_TARGET必须设置且大于100;兼容参数必须设置且大于12.1.0

  

2,表空间,表,分区和物化视图都可以启用内存中的列式存储,当前表空间启用内存中的列式存储后,默认为该表空间下以后新增所有表和物化视图都启用了内存中列式存储,该表空间下之前已经存在的表不受影响,设置表空间启用内存中的列式存储时INMEMORY关键字前面必须加默认

  

3,表级别启用内存中的列式存储的前提条件:创建表或更改表时指定了INMEMORY

  

4,查询表是否启用内存中的列式存储,参见USER_TABLES.INMEMORY是否等于& # 39;启用# 39;,等于启用说明启用了

  

5,   ,只有在实例启动或访问该对象时才会加载到内存内存中,如果想把表数据立即加载到内存内存中,则对该表强制执行全表扫描或使用DBMS_INMEMORY.POPULATE即可。   查,看表的数据是否已经进入了内存内存区,参见V IM_SEGMENTS.SEGMENT_NAME美元。   

  

6, 12.2.0版本开始可以使用ILM ADO政策对内存中列式存储进行相应设置,ILM ADO政策在数据库级别生效,而不是实例级别,信息生命周期管理(ILM)自动数据优化(ADO)政策信息生命周期管理自动数据优化政策意思就是可以决定内存中列式存储在哪张表上什么时候什么情况下生效,什么时候什么情况下失效.ALTER表TABLE_NAME ILM添加策略集|修改|没有INMEMORY

  

12 c新特性___In-Memory列式存储的总结