zoukankan      html  css  js  c++  java
  • 12c inmemory option 体验

    此次测试的目标是对比是用索引去做统计分析与使用内存列式存储去做统计分析。

    检查初始化参数。

    SQL> show parameter inmemory
    
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    inmemory_clause_default 	     string
    inmemory_force			     string	 DEFAULT
    inmemory_max_populate_servers	     integer	 0
    inmemory_query			     string	 ENABLE
    inmemory_size			     big integer 0
    inmemory_trickle_repopulate_servers_ integer	 1
    percent
    optimizer_inmemory_aware	     boolean	 TRUE
    

    设置inmemory_size参数并重启数据库

    SQL> alter system set inmemory_size=100M scope=spfile; 
    
    System altered.
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area  599785472 bytes
    Fixed Size		    2927192 bytes
    Variable Size		  364905896 bytes
    Database Buffers	  121634816 bytes
    Redo Buffers		    5459968 bytes
    In-Memory Area		  104857600 bytes
    Database mounted.
    Database opened.
    

    创建测试表

    SQL> create table inmom_tab as select * from dba_objects;
    
    Table created.

    insert into  inmom_tab  select * from inmom_tab;
    ......


    反复执行几次上述sql语句确保测试有效果

    SQL> select count(object_id) from inmom_tab where object_id is not null;

    COUNT(OBJECT_ID)
    ----------------
    11647488

     

     表上建立索引

    create index IDX1 on INMOM_TAB (OBJECT_ID);

    表上启用列式存储

    SQL> ALTER TABLE  inmom_tab  INMEMORY;
    
    Table altered.
    
    SQL> alter table inmom_tab  inmemory (object_id);
    
    Table altered.

    使用全表扫描去做此操作

    select count(distinct object_id) from inmom_tab; SQL> 
    ^Cselect count(distinct object_id) from inmom_tab
                                          *
    ERROR at line 1:
    ORA-01013: user requested cancel of current operation
    
    
    Elapsed: 00:03:52.71
    

      手动终止,时间已经超过3分钟还没结果,不能忍。

    使用索引

    select count(distinct object_id) from inmom_tab where  object_id is not null;
    
    COUNT(DISTINCTOBJECT_ID)
    ------------------------
    		   90996
    
    Elapsed: 00:00:09.73
    
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 2055747524
    
    --------------------------------------------------------------------------------------------
    | Id  | Operation		| Name	   | Rows  | Bytes |TempSpc| Cost (%CPU)| Time	   |
    --------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT	|	   |	 1 |	13 |	   | 19963   (3)| 00:00:01 |
    |   1 |  SORT AGGREGATE 	|	   |	 1 |	13 |	   |		|	   |
    |   2 |   VIEW			| VW_DAG_0 | 91944 |  1167K|	   | 19963   (3)| 00:00:01 |
    |   3 |    HASH GROUP BY	|	   | 91944 |   448K|   133M| 19963   (3)| 00:00:01 |
    |*  4 |     INDEX FAST FULL SCAN| IDX1	   |	11M|	55M|	   |  7036   (1)| 00:00:01 |
    --------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - filter("OBJECT_ID" IS NOT NULL)
    
    
    Statistics
    ----------------------------------------------------------
    	  7  recursive calls
    	  0  db block gets
          51950  consistent gets
          51927  physical reads
    	  0  redo size
    	560  bytes sent via SQL*Net to client
    	552  bytes received via SQL*Net from client
    	  2  SQL*Net roundtrips to/from client
    	  0  sorts (memory)
    	  0  sorts (disk)
    	  1  rows processed
    

    时间是0.09s 。

    使用内存列式存储访问

    select /*+ no_index(inmom_tab idx1) */count(distinct object_id) from inmom_tab where  object_id is not null;SQL> 
    
    COUNT(DISTINCTOBJECT_ID)
    ------------------------
    		   90996
    
    Elapsed: 00:00:03.77
    
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 1778946740
    
    ---------------------------------------------------------------------------------------------------
    | Id  | Operation		      | Name	  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time	  |
    ---------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT	      | 	  |	1 |    13 |	  | 30957   (2)| 00:00:02 |
    |   1 |  SORT AGGREGATE 	      | 	  |	1 |    13 |	  |	       |	  |
    |   2 |   VIEW			      | VW_DAG_0  | 91944 |  1167K|	  | 30957   (2)| 00:00:02 |
    |   3 |    HASH GROUP BY	      | 	  | 91944 |   448K|   133M| 30957   (2)| 00:00:02 |
    |*  4 |     TABLE ACCESS INMEMORY FULL| INMOM_TAB |    11M|    55M|	  | 18030   (1)| 00:00:01 |
    ---------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - inmemory("OBJECT_ID" IS NOT NULL)
           filter("OBJECT_ID" IS NOT NULL)
    
    
    Statistics
    ----------------------------------------------------------
    	  7  recursive calls
    	  0  db block gets
         263504  consistent gets
         263487  physical reads
    	  0  redo size
    	560  bytes sent via SQL*Net to client
    	552  bytes received via SQL*Net from client
    	  2  SQL*Net roundtrips to/from client
    	  0  sorts (memory)
    	  0  sorts (disk)
    	  1  rows processed
    

    时间是0.03s,速度似乎与使用索引不相上下。

     

     

     

     

     

     
  • 相关阅读:
    鼠标单击事件( onclick )
    什么是事件《js》
    作业
    javaben的设计规则
    cookie的相关方法
    cookie 基本用法
    include 指令与动作区别
    简单的购物车应用案例 相关代码4
    简单的购物车应用案例 相关代码3
    iOS UI 布局
  • 原文地址:https://www.cnblogs.com/wangxingc/p/5598388.html
Copyright © 2011-2022 走看看