insert的不同场景性能比较(97天)

关于Insert的问题,可能在一些场景中会有完全不同的期望和结果,在日常工作使用的库中,需要表在Logging模式,必要时需要一些索引

但在数据迁移中,可能为了提高速度,索引就需要考虑重建了。

我做了一些场景的测试,并且做了详细的数据比对。

第一种场景:table在nologging模式下。并且表中没有索引,

在插入不同数据量的时候,生成的redo和响应时间都有一定的幅度提升。

比如插入13240331条记录时,响应时间为63秒,生成323219520bytes(300多M)的redo.

nologging+no index

sec:misec

inserted rows

redo generated

00.10

25862

635692

00.12

51723

1231620

00.18

103444

2461540

00.33

206885

4922516

00.67

413766

9840892

02.19

827527

19697976

09.90

1655048

40128988

15.68

3310089

80470212

33.89

6620170

161501892

63.28

13240331

323219520

第二种场景:table在logging模式下,表中没有索引

logging+no index

00.10

25862

635616

00.10

51723

1231620

00.17

103444

2461480

00.35

206885

4930208

00.68

413766

9841248

01.69

827527

19692980

06.94

1655048

40117876

16.66

3310089

80428640

41.23

6620170

161690412

72.47

13240331

323049996

总结:可以看到两者基本上没有任何变化

第三种场景:表在nologging模式,表中有主键,主键对应的索引处于logging模式

nologging+index(unique index) logging

00.22

25862

1381736

00.32

51723

2733468

00.44

103444

5431700

01.15

206885

10872316

03.25

413766

21777088

07.69

827527

43521600

16.33

1655048

90658812

41.71

3310089

183135576

82.40

6620170

366262424

190.50

13240331

731534236

可能直接看不太明显,如果有一个图标就更清晰了。左边的部分是采用logging,没有索引的场景,可以看到已经有了成倍的变化。可见在有索引的时候对于insert来说,会产生大量的redo,响应时间也成倍提高。

第四种场景,表采用nologging模式,表中无索引,使用append模式插入数据。

nologging+no index+append

00.14

25862

635632

00.14

51723

1231560

00.16

103444

2461480

00.33

206885

4922516

00.64

413766

9840848

01.52

827527

19697592

11.30

1655048

40165208

19.18

3310089

80450796

46.26

6620170

160910172

76.66

13240331

322991832

总结:可以看到在没有索引的情况下,nologging+append模式和nologging基本没有区别。

第五种场景:表处于nologging模式,表中有索引,处于Nologging模式。采用append插入数据。

可以看到采用index的logging和nologging模式,两者也没有明显的变化

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从流域到海域

《笨办法学Python》 第35课手记

《笨办法学Python》 第35课手记 本节课讲函数和分支的,实际上是一次综合练习,代码有点长,请先纠正代码中的错误使脚本能够运行。 原代码中使用三个空格来进行...

18810
来自专栏深入浅出区块链技术

Solidity教程系列2 - 地址类型介绍

Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么

662
来自专栏C#

Oracle数据库的SQL分页模板

      在系统开发过程中,需要对数据进行查询,大部分情况下从数据库中查询的数据量比较大,在系统页面无法全部显示,而且查询全部的数据会影响系统的反应速度,需要...

1746
来自专栏编程一生

预告片优化方案

662
来自专栏前端说吧

JS-流程控制汇集

3256
来自专栏闻道于事

C语言课程设计(成绩管理系统)

C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 1 #inclu...

3595
来自专栏数据结构与算法

7909:统计数字

7909:统计数字 查看 提交 统计 提问 总时间限制:1000ms内存限制:65536kB描述 某次科研调查时得到了n个自然数,每个数均不超过15000000...

3348
来自专栏数据和云

巧用复合索引,有效降低系统IO

我们知道索引至关重要,合理的索引使用能够在很大程度上改善数据库的性能。然而很多人都会走入这样一个误区:走索引的SQL语句的性能一定比全表扫描好。真的是这样吗?今...

2779
来自专栏一名合格java开发的自我修养

Storm的BaseBasicBolt源码解析ack机制

我们在学习ack机制的时候,我们知道Storm的Bolt有BaseBasicBolt和BaseRichBolt。 在BaseBasicBolt中,BasicOu...

471
来自专栏代码GG之家

【安卓开发代码保护】浅谈代码混淆加固技术

随着移动互联网的快速发展,应用的安全问题不断涌现出来,于是越来越多的应用开发者将核心代码由java层转到native层,以对抗成熟的java逆向分析工具,...

1816

扫描关注云+社区