生产环境sqlldr加载性能问题及分析之一

简介: 在测试环境中进行了多轮测试,使用sqlldr批量加载数据,csv文件大概有120G左右,在一致的数据量的情况下,测试环境都在一个小时左右,但是在生产环境中竟然跑了将近2个小时,性能差了一倍。

在测试环境中进行了多轮测试,使用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_HISTORY
in AWR snapshot 1996
Analysis End Time: 24-Jun-14 00:30:00 DBA_HIST_ACTIVE_SESS_HISTORY
in 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_HISTORY
in AWR snapshot 12852
Analysis End Time: 27-Jun-14 04:00:00 DBA_HIST_ACTIVE_SESS_HISTORY
in 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


目录
相关文章
|
前端开发 Java 关系型数据库
【SpringBoot】微服务学习笔记七:微服务中异步调用数据提交数据库的问题
【SpringBoot】微服务学习笔记七:微服务中异步调用数据提交数据库的问题
810 0
【SpringBoot】微服务学习笔记七:微服务中异步调用数据提交数据库的问题
|
SQL 数据处理 流计算
实时计算 Flink版产品使用合集之sql真正的执行顺序是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
使用 Flask 3 搭建问答平台(一):项目结构搭建
使用 Flask 3 搭建问答平台(一):项目结构搭建
|
人工智能 运维 Cloud Native
SLS新版本告警入门——告警策略_抑制和静默
在告警管理的过程中,除了通过路由合并来进行降噪,减少通知次数之外,还有一些更加高级的场景,例如需要暂时不发送通知。这就是告警抑制和告警静默所提供的功能。
1231 0
SLS新版本告警入门——告警策略_抑制和静默
|
存储 中间件 BI
Laravel服务容器详解
Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。
366 0
|
人工智能 小程序 前端开发
华为主动找我合作,我放弃了!前端实现拍照识别垃圾分类最简单的方法!
2019年7月,上海作为第一个试运行垃圾分类的城市。当时的微信指数居高不下,引发了非常热烈的社会讨论,原因是上海当时执行得很坚决,社区垃圾桶旁都有带着红袖标的大爷大妈在看着,扔错了现场罚200元。 当时人心惶惶,有很多人担心自己分类不准确被罚款。上海市政府在宣传垃圾分类的时候就在推一个垃圾分类查询的小程序。我当时捕捉到了这个热点,花了一天时间使用uni-app快速搭建了一个拍照识别垃圾所属分类的小程序《垃圾分类精灵》(现在还在线,大家可以搜来用)。在短短半个月里获取到了6w多用户。
282 0
华为主动找我合作,我放弃了!前端实现拍照识别垃圾分类最简单的方法!
|
4天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1107 0
|
3天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
536 10
|
13天前
|
人工智能 运维 安全
|
12天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。

热门文章

最新文章