create table as select性能测试
转载自: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都没有性能提升,现在还不清楚为什么。
create table as select性能测试相关推荐
- Oracle中,使 CREATE TABLE AS SELECT 支持ORDER BY
Oracle中,使 CREATE TABLE AS SELECT 支持ORDER BY 文章发表:kehui 发表日期:2002-01-21 阅读次数:1103 大家都知道,"CREA ...
- 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ?
如何使'CREATE TABLE AS SELECT'能支持ORDER BY ? 大家都知道,"CREATE TABLE AS SELECT"这个SQL命令并不支持 ...
- oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别...
create table as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...
- oracle insert into as select,比较create table as select * 与 insert into table select *
实验环境: SYS@aaron> select * from v$version; BANNER ------------------------------------------------ ...
- 当create table as select 遇上大数据
统计24小时的红包感知专题,有1.5亿行以上的数据,Nokia给出的方法是先按小时执行算法,再汇总各个小时的执行结果. 算法中包含了大量的 sum(case when)计算. 专题里有5个小节,执行计 ...
- SQL—— Create table as select 与 使用select查询结果创建新表
Create table as select,有以下三种方式: create table table1 as select * from table2 where 1=2; 创建一个表结构与table ...
- 慎用create table as select,一定要注意默认值的问题
再做一些数据迁移时候,很多人会使用create table as select * from table where id=-1的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的d ...
- MySQL create table xxx select * from yyy 的坑
create table xxx select * from yyy; 这种写法没有:主键.索引.约束.自增 这种写法没有:主键.索引.约束.自增 这种写法没有:主键.索引.约束.自增 重要的事情说三 ...
- mysql create table as select from_MySQL不能用create table as select 的原因
1.新表不会自动创建创建和原表相同的索引. 2.一个事务中混合了事务和非事务语句.它会提交当前和未完成的事务. 例如,该例子中,第2个update未执行成功,会导致第1个update回滚,但是其中的C ...
最新文章
- 模式设计概述:反应器(Reactor)模式
- R绘制QQ图并解读QQ图
- 反射机制(1)认识Class类
- Windows 7/Windows 8都有上帝模式
- Android --- 拍照上传图片之后,发现图片是全黑色,什么内容也没有
- TensorFlow:张量排序,填充和复制
- 关于ibatis.net 和 Nhibernate的选择
- WinCE EBOOT中的BootPart分析
- 南漂DBA——除了996,还可以收获这些...
- HTML5的绘画支持(五)
- 离散数学 左孝凌-教材与习题解析-分享
- 常用CSS的命名规范:
- python实现——WORD转PDF(全自动化,支持doc、docx)
- DeepFool论文翻译---DeepFool: a simple and accurate method to fool deep neural networks
- 测斜原始数据处理工具
- 隔离太无聊!不如用Python实现愤怒的小鸟,看看能否通关!
- python聊天小程序支持私聊和多人_Python 使用 django 框架实现多人在线匿名聊天的小程序...
- arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.s 什么意思? 2020-11-21
- android 比较靠谱的图片压缩
- omap android,德州仪器基于Android 移动平台演示OMAP
热门文章
- 数据存储方式_视频监控系统的数据存储方式的概念及应用
- 计算机联用测定无机盐溶解热测试题,计算机联用测定无机盐溶解热
- java中匿名类的注意细节
- Python中的生成器与迭代器
- python案例实操_用案例实操学习Python ,培养编程逻辑思维
- 如何把密度函数化为标准正态二维分布_概率微课:第三章(22) 二维随机变量及分布函数定义...
- php引号变量_下列PHP数据库insert语句中变量前后的点和双引号有什么作用?
- 三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统
- Nginx(一):概念基础
- Ubuntu16.04LTS修改开机动画