生产环境sqlldr加载性能问题及分析之一 (r2第17天)

在测试环境中进行了多轮测试,使用sqlldr批量加载数据,csv文件大概有120G左右,在一致的数据量的情况下,测试环境都在一个小时左右,但是在生产环境中竟然跑了将近2个小时,性能差了一倍。而且生产环境的服务器配置还要好一些。对于这个奇怪的问题,尽管说数据第一轮数据迁移已经完成了,对于之后的数据迁移还是很好的参考和经验借鉴。

今天对生产环境和测试环境中的信息进行了比对。先拿到对应的awr报告。 测试环境的数据库情况如下。

Host Name

Platform

CPUs

Cores

Sockets

Memory (GB)

test_db

Linux x86 64-bit

40

20

2

354.11

Snap Id

Snap Time

Sessions

Cursors/Session

Begin Snap:

1996

23-Jun-14 23:30:34

264

2.3

End Snap:

1998

24-Jun-14 00:30:18

105

3.0

Elapsed:

59.74 (mins)

DB Time:

5,864.54 (mins)

生产环境的数据库情况如下:

Host Name

Platform

CPUs

Cores

Sockets

Memory (GB)

prod_db

Linux x86 64-bit

40

20

2

180.89

Snap Id

Snap Time

Sessions

Cursors/Session

Begin Snap:

12852

27-Jun-14 03:00:55

760

2.5

End Snap:

12853

27-Jun-14 04:00:22

780

2.5

Elapsed:

59.45 (mins)

DB Time:

8,861.63 (mins)

通过上面的信息可以得到, 1.在生产库的负载将近是测试库的两倍,数据加载速度却是测试库的50%,从这个角度来看,也确实是合理的。 2.对于session的情况,测试库和生产库有着明显的差别,测试库中的session在105-264左右,但是在生产库中却有760-780左右,我之前建议在生产数据迁移的时候把listener的端口改了,这样,开发测试部分的人就连不到库了,能从一定程度上减少额外的干扰,但是限于时间紧迫,需要考虑的因素比较多,客户不太愿意这么做。 3.基于第二点,有人在数据迁移的过程中访问数据库,进行了一些查询,从某种程度上降低了数据库的响应速度。但是活跃的session有那么多嘛,因为在测试和生产中,并行的插入线程都基本控制在150个左右。怎么有这么大的差别啊。如果想得到一些更为有效的信息,可以通过ash,下面就是通过ash得到的数据。 测试环境:

CPUs

SGA Size

Buffer Cache

Shared Pool

ASH Buffer Size

40

11,198M (100%)

6,144M (54.9%)

783M (7.0%)

80.0M (0.7%)

Sample Time

Data Source

Analysis Begin Time:

23-Jun-14 23:30:00

DBA_HIST_ACTIVE_SESS_HISTORYin AWR snapshot 1996

Analysis End Time:

24-Jun-14 00:30:00

DBA_HIST_ACTIVE_SESS_HISTORYin AWR snapshot 1998

Elapsed Time:

60.0 (mins)

Sample Count:

37,692

Average Active Sessions:

104.70

Avg. Active Session per CPU:

2.62

Report Target:

None specified

生产环境

CPUs

SGA Size

Buffer Cache

Shared Pool

ASH Buffer Size

40

12,233M (100%)

6,144M (50.2%)

1,891M (15.5%)

80.0M (0.7%)

Sample Time

Data Source

Analysis Begin Time:

27-Jun-14 03:00:00

DBA_HIST_ACTIVE_SESS_HISTORYin AWR snapshot 12852

Analysis End Time:

27-Jun-14 04:00:00

DBA_HIST_ACTIVE_SESS_HISTORYin AWR snapshot 12853

Elapsed Time:

60.0 (mins)

Sample Count:

55,608

Average Active Sessions:

154.47

Avg. Active Session per CPU:

3.86

Report Target:

None specified

可以看到活跃的session数确实比测试库多了不少。这个可以稍后做确认。 还有一个是归档的问题 下面是查看数据库归档的情况,可以看到生产库归档在119次左右,而测试库在130次左右,日志切换的次数多,说明在那个时间段内处理了更多的数据操作。

最后,比较top event的情况作为一个引子,明天来详细的阐述这些等待事件后面的一些问题。 测试库的情况

Top User Events

Event

Event Class

% Event

Avg Active Sessions

log buffer space

Configuration

46.82

49.03

db file sequential read

User I/O

14.00

14.66

log file sync

Commit

7.07

7.40

CPU + Wait for CPU

CPU

5.98

6.26

buffer busy waits

Concurrency

5.64

5.90

Back to Top Events Back to Top

Top Background Events

Event

Event Class

% Activity

Avg Active Sessions

db file parallel write

System I/O

2.48

2.60

生产库的情况

Top User Events

Event

Event Class

% Event

Avg Active Sessions

free buffer waits

Configuration

22.29

34.43

buffer busy waits

Concurrency

15.20

23.48

log buffer space

Configuration

13.97

21.58

enq: TX - index contention

Concurrency

10.16

15.70

log file switch (checkpoint incomplete)

Configuration

9.94

15.35

Back to Top Events Back to Top

Top Background Events

Event

Event Class

% Activity

Avg Active Sessions

db file async I/O submit

System I/O

2.56

3.96

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开发与安全

win 7和Ubuntu 12.04 双系统下的磁盘分区问题

断续学Linux以来就一直没完全搞清楚磁盘分区的问题,现在虽然还是不清楚,但应该有点思路了,且记下。 我装了双系统,首先看在win 7下看到的磁盘分区情况: ?...

1835
来自专栏Spark学习技巧

Hbase源码系列之regionserver应答数据请求服务设计

一,基本介绍 Hbase源码系列主要是以hbase-1.0.0为例讲解hbase源码。本文主要是将Regionserver服务端RPC的结构及处理流程。希望是帮...

3649
来自专栏沃趣科技

容器化RDS|计算存储分离架构下的Split-Brain

不管是架构选型还是生活, 绝大多数时候都是在做 trade off, 收获了计算存储分离带来的好处, 也意味着要忍受它带来的一些棘手问题. 本文尝试结合 Kub...

3908
来自专栏北京马哥教育

记一次内存占用问题的调查过程

马哥linux运维 | 最专业的linux培训机构 ---- 最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差...

2854
来自专栏liulun

windows服务器性能监控工具、方法及关键指标

监控方法 推荐使用windows自带的“性能监视器”(老版本的windows叫性能计数器)来监控服务器的性能。 打开控制面板内的管理工具,在管理工具内打开性能监...

2426
来自专栏小鄧子的技术博客专栏

About ExecutorService(3),我所认识的AsyncTask

打开电脑的时候已经深夜十二点多了,周末两天过的实在憋屈,小伙伴喊我去打球,因为脚趾的伤至少还要数周才能痊愈,于是当了一天的啦啦队,第二天果断没再去。。。

733
来自专栏Golang语言社区

Golang之chan/goroutine

最近在team内部培训golang,目标是看看golang能否被C工程师快速掌握。我定了个一个月,共计20小时的培训计划,首先花10个小时(两周,每天1小时)让...

3067
来自专栏大魏分享(微信公众号:david-share)

微服务中Hystrix的作用详解

什么是Hystrix 笔者在之前文章《从一个实验看微服务架构---不谈理念讲干货》中,简单介绍了基于Openshift实现微服务的方法。在实验中,所有微服务都通...

2555
来自专栏IT杂记

Thrift抛直接内存OOM一点解决思路

最近使用Thrift TThreadedSelectorServer服务方式,运行一段时间就会抛OutOfMemoryError: Direct buffer ...

2027
来自专栏猿人谷

Java性能调优

一、JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm)   其中N...

19610

扫描关注云+社区