暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle 19c Inmemory功能介绍

IT那活儿 2023-05-31
2169
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



前 言



随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:
  • 传统的以行形式保存的数据满足OLTP应用;
  • 列形式保存的数据满足以查询为主的OLAP应用。
in memory组件可以和其他数据库组件功能使用,并不需要用户单独开发或者修改应用程序,就可以非常方便的实现基于实时数据库分析的转变。

1. inmemory适用于什么样的系统类型

  • 1)报表与分析
  • 2)混合负载OLTP应用(ERP,CRM…)

2. inmemory可以在以下级别启用In-Memory

  • 1)
  • 2)表上的某一列
  • 3)物化视图
  • 4)表空间
  • 5)分区




启动inmemory的方式



1. 启用In-memory中的对象

注:如果不知道的话,oracle推荐有In-Memory Advisor建议器,会从你的awr报告中取抓取然后给你分析哪些对象是可以放入到in-memory中。

Download In-Memory Advisor:

https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=1965343.1&attachid=1965343.1:IMADVISOR4&clickstream=yes

2. 在后台中将对象自动发布到In-Memory区域中



IN MEMORY测试



以下是在测试环境中进行:
1. 查看是否开启inmemory功能
inmemory_size为0,默认是关闭的。
SQL> show parameter inmemory_size

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_size big integer 0

复制
2. 打开inmemory功能
启用inmemory非常简单,12.1.0.2及之后版本下,设置INMEMORY_SIZE 为非0值便可启用IM column store特性,最小值为100M。通常情况下,sys用户下的对象及SYSTEM、SYSAUX表空间上的对象无法使用IMO特性,但通过设置“_enable_imc_sys”隐含参数也可以使用。
这里我分配200M:
SQL> alter system set inmemory_size=200M scope=spfile;

System altered.

复制
3. 重启数据库
启动时可以看到In-Memory Area,它是由SGA中分出的200M。In-Memory列式存储特性开启后数据库启动时会在SGA中分配一块静态的内存池In-Memory Area,用于存放以In-Memory列式存储的用户表。
SQL> startup;
ORACLE instance started.

Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1006633816 bytes
Database Buffers 352321536 bytes
Redo Buffers 7983104 bytes
In-Memory Area 218103808 bytes
Database mounted.
Database opened.

复制
4. 创建测试数据
SQL> create table WJH.TEST_05 as select * from dba_objects;

Table created.

复制
5. 对TEST_WJH表开启inmemory
SQL> alter table WJH.test_wjh inmemory;

Table altered.

复制
6. 通过查看视图V$IM_COLUMN_LEVEL可以看到TEST_WJH表是否开启inmemory
SQL> SELECT 
owner,obj_num,table_name,column_name,inmemory_compression
FROM V$IM_COLUMN_LEVEL and owner<>’sys’;

复制
7. 全表扫描整个表
测试是否开启inmemory功能,执行的路径已从TABLE ACCESS FULL  TABLE ACCESS INMEMORY FULL,说明该表进行全表扫描,已成功开启使用Inmemory功能。

总 结:

1)数据库级别启用的IN-Memory列式存储的两个前提条件:Memory_target参数必须设置大于100M,COMPATIBLE参数必须且大于12.1.0。
2)表空间、表、分区和物化视图都可以去启用列数存储,当前表空间启动inmemory列式存储后,默认为该表空间下以后新增的表和物化视图都启用了In-Memory列式存储,该表空间下之前已经存在的表不受影响。
3)表级别启用In-Memory列式存储的前提条件:create table或alter table时指定了INMEMORY。

END


本文作者:王俊晖(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论