1   内存数据库测试

在pdba下创建一张表:

create table inmem_test as select * from

dba_source;

SQL> select count(*) from dba_source;

COUNT(*)

----------

342744

insert into inmem_test

select 'fd'||owner||'sfd'

a,'gvj'||name||'af4s' b,type,'6'||line||'73' c,text d,ORIGIN_CON_ID||'56' e

from inmem_test;

SQL> SELECT COUNT(*) FROM inmem_test;

COUNT(*)

----------

2056464

SQL> select

owner,table_name,STATUS,CACHE,LAST_ANALYZED,INMEMORY,INMEMORY_PRIORITY,INMEMORY_DISTRIBUTE,INMEMORY_COMPRESSION,INMEMORY_DUPLICATE

from dba_tables where table_name='INMEM_TEST';

OWNER       TABLE_NAME

STATUS   CACHE LAST_ANALYZED       INMEMORY INMEMORY INMEMORY_DISTRI

INMEMORY_COMPRESS INMEMORY_DUPL

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

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

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

PDBA        INMEM_TEST

VALID    N 2014/12/31 09:35:20 DISABLED

SQL> select

owner,segment_name,segment_type,BYTES/1024/1024

size_MB,BLOCKS,EXTENTS,INMEMORY,INMEMORY_COMPRESSION FROM DBA_SEGMENTS WHERE

SEGMENT_NAME like 'INMEM%';

OWNER      SEGMENT_NAME    SEGMENT_TYPE      SIZE_MB     BLOCKS

EXTENTS INMEMORY INMEMORY_COMPRESS

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

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

PDBA       INMEM_TEST      TABLE             408

52224    122 DISABLED

系统内存情况检查:

SELECT

MAX(LINE) FROM INMEM_TEST;

创建同样的表:

create table inmem_in_test as select * from

inmem_test;

select count(*) from inmem_in_test;

SELECT

MAX(LINE) FROM INMEM_TEST;

从上述结果看到两张表的大小应该是不一样的,我们可以采取move操作事宜一样大小:

在查询:

此两张表的同样的执行语句得到的统计数据应该是一致的可以看看:

可以看到跟预期的是一样的,我们开始将表inmem_in_test修改为in-memory模式:

alter table inmem_in_test inmemory;

select

owner,segment_name,segment_type,BYTES/1024/1024

size_MB,BLOCKS,EXTENTS,INMEMORY,INMEMORY_COMPRESSION FROM DBA_SEGMENTS WHERE

SEGMENT_NAME like ‘INMEM%’

表已经修改为in-memory模式了,开始做一次同样的查询:

SELECT MAX(LINE) FROM INMEM_IN_TEST;

有大量的物理读,再次和执行:

任然存在物理读,只不过少了很多,为什么还存在物理读呢?

我们在对表inmem_test进行cache后在执行:

发现仍然存在物理读?原因主要是这其实是11g之后的新特性,大表就不经过缓存,直接走direct path read。为了避免该特性影响对比,我们用event将其屏蔽

alter session set events

'10949 trace name context forever, level 1';

修改后的查询中仍然存在大量的物理读情况。

再次确认操作系统内存情况,大约为4.2G:

修改memory_max_target为2092M,同时相应的修改memory_target重启数据库后再次进行测试:

开始测试:

再次测试inmemory表:

虽有减少,但是仍然存在大量的物理读。

再次修改inmemory进行测试:

开始测试:

此时物理读的量更大了,在看非inmemory表的测试:

alter session set events '10949 trace name

context forever, level 1';

现在讲内存全部修改会原来的值。第一次运行:

第二次运行:

可以看到几乎瞬间就完成了,同时一致性读、物理读几乎为0。

对非inmemory表进行测试再次测试:

可以看到仍然有大量的物理读一致性读。对此运行后同样存在。

在对表的内存压缩能力进行检查:

此处可以看到我们采用的压缩方式为默认,这种压缩主要是为了提高query的效率,我们如果要求更高的压缩效率可以采用其他压缩,简单测试如下:

测试压缩后的查询效率:

可以看到压缩后的查询效率更高了。

此处限于本身测试环境的内存限制,测试至此,我们可以简单得出如下结果:

结论:

1、inmemory表第一次加载时需要较长的时间,在条件相同的情况下内存在内存中表的query效率远远大于no inmemory表效率。

2、inmemory内存区别于oracle已有内存结构PGA、SGA、或者新的memory设定。

3、inmemory采用不同的压缩级别对数据的压缩率不同,同样针对数据的增删改查的效率也不同。

4、此外根据oracle官方文档说明,在内存足够大的情况下可以将整个数据库强制到内存中成为内存数据库。

5、常用的inmemory视图:

SQL> select object_name from dba_objects

where object_name like 'V$IM%';

OBJECT_NAME

-------------------------------------------------------------------------------V$IM_COLUMN_LEVEL

V$IM_COL_CU

V$IM_HEADER

V$IM_SEGMENTS

V$IM_SEGMENTS_DETAIL

V$IM_SEG_EXT_MAP

V$IM_SMU_CHUNK

V$IM_SMU_HEAD

V$IM_TBS_EXT_MAP

V$IM_USER_SEGMENTS

12c oracle 修改内存_Oracle 12C 内存数据库测试相关推荐

  1. 12c oracle 修改内存_Oracle Database 12c In-Memory(内存数据库) 基本原理与简介

    转    https://blog.csdn.net/stevensxiao/article/details/51437274 参考文献 https://www.zhihu.com/question/ ...

  2. 12c oracle 修改内存_Oracle12c中性能优化功能增强新特性之重大突破——内存列存储新特性...

    Oracle12c中内存列存储 内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数 ...

  3. 12c oracle 修改内存_Oracle12c中性能优化amp;功能增强新特性之重大突破——内存列存储新特性...

    内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...

  4. 12c oracle 修改内存_关于Oracle数据库12c 新特性总结

    概述 今天主要简单介绍一下Oracle12c的一些新特性,仅供参考. 参考: http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NE ...

  5. 12c oracle 修改内存_还在等12.2吗?Oracle 12c后这个观念要改改!

    原标题:还在等12.2吗?Oracle 12c后这个观念要改改! 上周三(7月20日)北京城暴雨肆虐的场景想必不少人还印象深刻.数据显示,"7.20"降雨总量已超四年前的" ...

  6. oracle 测试数据类型,oracle修改表字段的数据类型测试

    oracle修改表字段的数据类型的测试 思路 将要更改类型的字段名改名新字段以备份: 根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名), 然后更新数据, 最后删除改名备份的字段 脚本 ...

  7. Oracle修改内存大小

    评论区大佬说的对--运行以下命令重启服务 alter system set memory_max_target=XXXm scope=spfile; alter system set memory_t ...

  8. oracle修改字符集_oracle修改数据库字符集

    1.查看数据库字符集 数据库服务器字符集: select* from nls_database_parameters: 其来源于props$,是表示数据库的字符集. 客户端字符集环境: select* ...

  9. 修改oracle+sga+size,oracle自动内存共享管理测试。修改 oracle 11g SGA_MAX_SIZE。

    目的,使用oracle 自动内存共享管理 基本都是修改过程.如需整理,请留言 SQL>show parameters target; NAME                           ...

最新文章

  1. 编译运行linux0.12,linux0.12 编译过程
  2. Last_Error: Slave SQL thread retried transaction 10 time(s) in vain, giving up导致主从不同步的解决方法
  3. RabbitMQ学习之队列监控
  4. python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了
  5. No module named ‘pyqt5‘解决办法
  6. 3D造型软件:Rhino 7 for Mac
  7. 陈赫入场,抖音背后的决心!
  8. 还在找一款编辑友好,美观方便的开源wiki系统?安利一款超好用wiki
  9. {dede-list flag='h'}DedeCMS支持flag标签解决办法
  10. python爬取饿了么评论_爬虫实例:饿了么爬虫
  11. 北京邮电大学计算机专业考研复试经验分享
  12. LeetCode-347. Top K Frequent Elements [C++][Java]
  13. fuchsia hub文件系统
  14. 一款APP从设计稿到切图过程全方位揭秘 Mark
  15. CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)
  16. python网络编程学什么_python网络编程学习《一》
  17. JUC--005--locks1
  18. 数据治理-理论-2-基本过程
  19. 数值微分:导数,偏导
  20. 基于网络爬虫的大学生就业数据分析与预测模型研究

热门文章

  1. 从追赶者到竞争者,智能汽车产业“长沙模式”走的什么捷径?
  2. 关于开发中怎么找问题并且解决思路(实操)
  3. RDKit | 子结构搜索和MCS算法
  4. 基于单片机的CO浓度检测及报警系统设计(电路+程序流程)
  5. js 获取浏览器高度和宽度值(兼容多浏览器)
  6. 阿里重投内容电商,VR技术会成为马云的杀手锏吗?
  7. 爬虫必备-mysqldb-海量数据解决方案
  8. 一份能帮助到你的2021年终总结
  9. Unity发布抖音小游戏:构建与发布
  10. 转:敏感性分析(Sensitivity Analysis) 和龙卷风图(tornado diagra