oracle 12c 性能,ORACLE 12C In-Memory功能性能测试

Posted on 2014 年 04 月 25 日

启用In-Memory功能

数据库版本12.1.0.2及其以上版本,inmemory_size参数设置为合适值

SQL> SELECT * FROM V$VERSION;

BANNER                                                                               CON_ID

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

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Beta                    0

PL/SQL Release 12.1.0.2.0 - Beta                                                          0

CORE    12.1.0.2.0      Beta                                                              0

TNS for Linux: Version 12.1.0.2.0 - Beta                                                  0

NLSRTL Version 12.1.0.2.0 - Beta                                                          0

SQL> SHOW PARAMETER inmemory;

NAME                                 TYPE        VALUE

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

inmemory_clause_default              string

inmemory_force                       string      DEFAULT

inmemory_query                       string      ENABLE

inmemory_size                        big integer 200M

创建表

这里可以知道,创建表大小为13631488,但是未使用In-Memory功能

SQL> create table t_xifenfei_in_memory as select * from dba_objects;

Table created.

SQL> SELECT BYTES FROM USER_SEGMENTS WHERE SEGMENT_NAME='T_XIFENFEI_IN_MEMORY';

BYTES

----------

13631488

SQL> select TABLE_NAME,INMEMORY_PRIORITY,INMEMORY_DISTRIBUTE,INMEMORY_COMPRESSION from user_tables;

TABLE_NAME                     INMEMORY INMEMORY_DISTRI INMEMORY_COMPRESS

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

T_XIFENFEI_IN_MEMORY

SQL>  SELECT * FROM V$INMEMORY_AREA;

POOL                       ALLOC_BYTES USED_BYTES POPULATE_STATUS                CON_ID

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

1MB POOL                     166723584          0 DONE                                3

64KB POOL                     33554432          0 DONE                                3

未使用In-Memory功能测试

SQL> SET AUTOT TRACE

SQL> SELECT * FROM T_XIFENFEI_IN_MEMORY;

90902 rows selected.

Execution Plan

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

Plan hash value: 3598036702

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

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

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

|   0 | SELECT STATEMENT  |                      | 90902 |     9M|   427   (1)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| T_XIFENFEI_IN_MEMORY | 90902 |     9M|   427   (1)| 00:00:01 |

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

Statistics

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

5  recursive calls

0  db block gets

7505  consistent gets

1527  physical reads

0  redo size

12125231  bytes sent via SQL*Net to client

67212  bytes received via SQL*Net from client

6062  SQL*Net roundtrips to/from client

2  sorts (memory)

0  sorts (disk)

90902  rows processed

这里可以看到未使用In-Memory功能,数据库查询执行计划使用TABLE ACCESS FULL,consistent gets为7505

使用In-Memory功能测试

SQL>  alter table  T_XIFENFEI_IN_MEMORY inmemory;

Table altered.

SQL> select TABLE_NAME,INMEMORY_PRIORITY,INMEMORY_DISTRIBUTE,INMEMORY_COMPRESSION from user_tables;

TABLE_NAME                     INMEMORY INMEMORY_DISTRI INMEMORY_COMPRESS

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

T_XIFENFEI_IN_MEMORY           NONE     AUTO DISTRIBUTE FOR QUERY

--因为只是把该表设置了INMEMORY,但是未查询过,所以查询V$INMEMORY_AREA中未使用相关内存

SQL> SELECT * FROM V$INMEMORY_AREA;

POOL                       ALLOC_BYTES USED_BYTES POPULATE_STATUS                CON_ID

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

1MB POOL                     166723584          0 DONE                                3

64KB POOL                     33554432          0 DONE                                3

--进行一次全表扫描

SQL> SELECT COUNT(*) FROM T_XIFENFEI_IN_MEMORY;

COUNT(*)

----------

90902

--再次查看,已经使用了分配的In-Memory中内存

SQL> SELECT * FROM V$INMEMORY_AREA;

POOL                       ALLOC_BYTES USED_BYTES POPULATE_STATUS                CON_ID

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

1MB POOL                     166723584    4194304 DONE                                3

64KB POOL                     33554432     131072 DONE                                3

SQL> SET AUTOT TRACE

SQL> SELECT * FROM T_XIFENFEI_IN_MEMORY;

90902 rows selected.

Execution Plan

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

Plan hash value: 3598036702

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

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

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

|   0 | SELECT STATEMENT           |                      | 90902 |     9M|    20  (45)| 00:00:01 |

|   1 |  TABLE ACCESS INMEMORY FULL| T_XIFENFEI_IN_MEMORY | 90902 |     9M|    20  (45)| 00:00:01 |

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

Statistics

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

3  recursive calls

0  db block gets

4  consistent gets

0  physical reads

0  redo size

4946298  bytes sent via SQL*Net to client

67212  bytes received via SQL*Net from client

6062  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

90902  rows processed

这里我们可以发现,使用了In-Memory功能之后,数据库consistent gets为4,相比未使用In-Memory之前的7505,性能最少提高近2000倍.

Posted in ORACLE 12C          |   Tagged 12.1.0.2, In Memory          |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值