转载自:http://blog.csdn.net/yangzhijun_cau/article/details/7396088
---------------------------------------------------------------------------------
原表270W数据,无照片,字段比较多,有50个左右
测试机是一个虚拟机,4CPU,内存空闲2G,windows2003,
oracle9.2.0.6 sga 1g,pga 1g
先测试非归档模式下
 1. 150秒
 采用create table as select结构
 create table lr_jbxx_test1 as 
 select * from lr_jbxx
归档模式下,耗时166秒
 2.99秒
 在测试1基础上增加nologging项
 create table lr_jbxx_test2
 nologging
  as 
 select * from lr_jbxx
 3.61秒
 在测试2基础上增加parallel项
 create table lr_jbxx_test3
 nologging
 parallel (degree 4) 
  as 
 select * from lr_jbxx
无nologging,增加并行51秒
  create table lr_jbxx_test7
 parallel (degree 4) 
  as 
 select * from lr_jbxx
归档模式下,有nologging和parallel,耗时54秒
 4.62秒
 在测试3基础上,将旧表插入分区表
 性能与测试3相当
 create table LR_JBXX_test4
 partition by range (PCS_DM_LRDWSZD)
 (
   partition F1 values less than ('410200000000')
     tablespace LDRK_DATA_TS1
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F2 values less than ('410300000000')
     tablespace LDRK_DATA_TS2
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F3 values less than ('410400000000')
     tablespace LDRK_DATA_TS3
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F4 values less than (MAXVALUE)
     tablespace LDRK_DATA_TS4
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     )
 )
 nologging
 parallel (degree 4) 
  as 
 select * from lr_jbxx
 5.203秒
 create table与insert into 分开做,先测试insert into无索引的情况
 第一步:创建表结构
 create table LR_JBXX_test5
 (
   LRRYID         NUMBER(12) not null,
   SFZH           VARCHAR2(18),
   XM             VARCHAR2(90),
   XB             VARCHAR2(8),
   CYM            VARCHAR2(90),
   CSRQ           DATE,
   MZ             VARCHAR2(4),
   SG             NUMBER(6,2),
   CZHKDZ         VARCHAR2(300),
   PCS_DM_HJ      VARCHAR2(12),
   HKSZDLX_DM     VARCHAR2(2),
   WHCD_DM        VARCHAR2(4),
   HYZK_DM        VARCHAR2(4),
   ZY_DM          VARCHAR2(30),
   CZFWID         NUMBER(10),
   FZXM           VARCHAR2(200),
   YFZGX          VARCHAR2(300),
   LRYY_DM        VARCHAR2(10),
   JZDZ           VARCHAR2(300),
   PCS_DM_JZD     VARCHAR2(12),
   JZRQ           DATE,
   JZSY           VARCHAR2(300),
   JZCS_DM        VARCHAR2(10),
   XCSZY          VARCHAR2(30),
   XFWCS          VARCHAR2(300),
   JZZQFRQ        DATE,
   YXQX           NUMBER(4),
   ZRR            VARCHAR2(300),
   HKLB_DM        VARCHAR2(2),
   JZZBH          VARCHAR2(20),
   BZ             VARCHAR2(3000),
   TBR            VARCHAR2(30),
   TBDW           VARCHAR2(14),
   TBRQ           DATE,
   SJLY_DM        VARCHAR2(2),
   DRBZ           CHAR(1),
   BDYJBZ         VARCHAR2(20),
   BDYJSJ         DATE,
   HJID           NUMBER(12),
   XMPY           VARCHAR2(300),
   XZQH_HJ        VARCHAR2(60),
   XZQH_JZD       VARCHAR2(60),
   PCS_MC_HJ      VARCHAR2(600),
   PCS_MC_JZD     VARCHAR2(600),
   DYCS           NUMBER(4),
   DYSJ           DATE,
   TBDWMC         VARCHAR2(300),
   GAJGXZ         VARCHAR2(10),
   PCS_DM_LRDWSZD VARCHAR2(12),
   XGDW           VARCHAR2(20),
   XGSJ           DATE,
   BGDW           VARCHAR2(20),
   BGSJ           DATE,
   ZZMM           VARCHAR2(200),
   XGY            VARCHAR2(200)
 )
 partition by range (PCS_DM_LRDWSZD)
 (
   partition F1 values less than ('410200000000')
     tablespace LDRK_DATA_TS1
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F2 values less than ('410300000000')
     tablespace LDRK_DATA_TS2
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F3 values less than ('410400000000')
     tablespace LDRK_DATA_TS3
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     ),
   partition F4 values less than (MAXVALUE)
     tablespace LDRK_DATA_TS4
     pctfree 10
     initrans 1
     maxtrans 255
     storage
     (
       initial 64K
       minextents 1
       maxextents unlimited
     )
 );
 第二步:insert
 insert into LR_JBXX_test5  
 select * from lr_jbxx
 6 2103 
 在测试5的基础上,测试索引对批量插入的影响
 是没有索引的10倍
 alter table LR_JBXX_test6
   add constraint PK_LR_JBXX_FQ1 primary key (LRRYID)
   using index 
   tablespace LDRK_IDX
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 alter table LR_JBXX_test6
   add constraint YS_JZZBH1 unique (JZZBH)
   using index 
   tablespace LDRK_DATA
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 alter table LR_JBXX_test6
   add constraint YS_SFZH1 unique (SFZH, XM)
   using index 
   tablespace LDRK_DATA
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 -- Create/Recreate indexes 
 create index IDX_CZFWID1 on LR_JBXX_test6 (CZFWID)
   tablespace LDRK_DATA
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 create index IDX_LR_JBXX_JZDPCS_FQ1 on LR_JBXX_test6 (PCS_DM_JZD);
 create index IDX_LR_JBXX_LRDWSZD_FQ1 on LR_JBXX_test6 (PCS_DM_LRDWSZD);
 create index IDX_LR_JBXX_SFZH_FQ1 on LR_JBXX_test6 (SFZH)
   tablespace LDRK_IDX
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 create index IDX_LR_JBXX_TBDW_FQ1 on LR_JBXX_test6 (TBDW)
   tablespace LDRK_IDX
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 create index IDX_LR_JBXX_XGDW1 on LR_JBXX_test6 (XGDW)
   tablespace LDRK_DATA
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
 create index IDX_LR_JBXX_ZRR1 on LR_JBXX_test6 (ZRR)
   tablespace LDRK_IDX
   pctfree 10
   initrans 2
   maxtrans 255
   storage
   (
     initial 64K
     minextents 1
     maxextents unlimited
   );
7.197秒
使用insert into /*+ append */结构
 insert into /*+ append */ LR_JBXX_test7  
 select * from lr_jbxx
归档模式下,255秒
8.188秒
与测试7比较,不使用hits
性能反倒更好。
在归档模式下,耗时267秒,开销增加约30%
结论:
1.create table as select结构远比先create table再insert into性能好的多,该测试性能差3倍;
2.使用nologging,性能提高一半,使用parallel性能提高一倍多;
3.索引对insert的性能影响极大,10倍以上;
4.不管是否归档,使用/*+ append */结构,对insert into都没有性能提升,现在还不清楚为什么。