查看: 2129|回复: 2

[新特性] Oracle 12.1.0.2的In Memory组件测试问题

[复制链接]
论坛徽章:
0
发表于 2014-7-30 11:47 | 显示全部楼层 |阅读模式
环境 是一台物理笔记本  IBM  W500

安装了 Linux6.4 和Oracle12.1.0.2

我在测试In Memory组件发现

[oracle@oracle12c Desktop]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Jul 30 05:05:42 2014

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4294967296 bytes
Fixed Size                    2932632 bytes
Variable Size                  436207720 bytes
Database Buffers          536870912 bytes
Redo Buffers                   13844480 bytes
In-Memory Area                 3305111552 bytes
Database mounted.
Database opened.
SQL> alter pluggable database pdborcl open;

Pluggable database altered.

SQL> conn sde/sde@pdborcl
Connected.
SQL> create table t1 as select * from dba_objects;

Table created.

SQL> select bytes from user_segments where segment_name='T1';

     BYTES
----------
  13631488

SQL> select * from v$inmemory_area;

POOL                           ALLOC_BYTES USED_BYTES POPULATE_STATUS
-------------------------- ----------- ---------- --------------------------
    CON_ID
----------
1MB POOL                    2632974336         33554432 DONE
         3

64KB POOL                     654311424         34996224 DONE
         3


SQL> set timing on
SQL> set autot trace
SQL> select * from t1;

91710 rows selected.

Elapsed: 00:00:01.65

Execution Plan
----------------------------------------------------------
Plan hash value: 3617692013

--------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time         |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |         | 91710 |    10M|   429   (1)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| T1         | 91710 |    10M|   429   (1)| 00:00:01 |
--------------------------------------------------------------------------


Statistics
----------------------------------------------------------
          2  recursive calls
          0  db block gets
       7553  consistent gets
       1538  physical reads
          0  redo size
   12218706  bytes sent via SQL*Net to client
      67795  bytes received via SQL*Net from client
       6115  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      91710  rows processed

=======================================================================

将该表进行memory测试

SQL> alter table t1 inmemory;

Table altered.

Elapsed: 00:00:00.07
SQL> set autot off
SQL> select * from v$inmemory_area;

POOL                           ALLOC_BYTES USED_BYTES POPULATE_STATUS
-------------------------- ----------- ---------- --------------------------
    CON_ID
----------
1MB POOL                    2632974336         33554432 DONE
         3

64KB POOL                     654311424         34996224 DONE
         3


Elapsed: 00:00:00.00
SQL> select count(*) from t1;

  COUNT(*)
----------
     91710

Elapsed: 00:00:00.02
SQL> select * from v$inmemory_area;

POOL                           ALLOC_BYTES USED_BYTES POPULATE_STATUS
-------------------------- ----------- ---------- --------------------------
    CON_ID
----------
1MB POOL                    2632974336         37748736 DONE
         3

64KB POOL                     654311424         35127296 DONE
         3


Elapsed: 00:00:00.01
SQL> set autot trace
SQL> select * from t1;

91710 rows selected.

Elapsed: 00:00:02.98

Execution Plan
----------------------------------------------------------
Plan hash value: 3617692013

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

| Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time
  |

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

|   0 | SELECT STATEMENT           |          | 91710 |    10M|    32  (16)| 00:00:0
1 |

|   1 |  TABLE ACCESS INMEMORY FULL| T1   | 91710 |    10M|    32  (16)| 00:00:0
1 |

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



Statistics
----------------------------------------------------------
          5  recursive calls
          0  db block gets
          5  consistent gets
          0  physical reads
          0  redo size
    4987819  bytes sent via SQL*Net to client
      67795  bytes received via SQL*Net from client
       6115  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      91710  rows processed

SQL>



测试结论:为什么在memory测试的指标都比一般情况要好,但是查询时间反而低了,而且我是在本机测试,不考虑网络的问题,这个我很不解,希望各位高手给予指点!
论坛徽章:
1
2014年世界杯参赛球队: 俄罗斯
日期:2014-08-06 14:09:57
发表于 2014-7-30 13:19 | 显示全部楼层
inmemory是列式存储,数据经过压缩的。它的优势是针对某些列的分析型操作。你如果只是把数据拿出来,数据库需要把列数据拼成行数据,相对于普通的行式存储还要干额外的工作,当然要慢了。

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2014-7-30 13:37 | 显示全部楼层
zcl3264 发表于 2014-7-30 13:19
inmemory是列式存储,数据经过压缩的。它的优势是针对某些列的分析型操作。你如果只是把数据拿出来,数据库 ...

非常感谢你的回答

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表