循序渐进调优ddl的案例 (79天)

在平时的工作中,可能需要导入一些数据,有些表可能比较大,对于constraint的操作可能会耗费大量的时间,今天简单做了一些相关的测试,也提出了一些相关的优化方案,对结果进行比较,看看哪种才是比较合理的方法。

首先监控redo,undo的生成量也是衡量的一个标准。本次测试就简单从redo,undo,执行时间这三个方面进行总结。我准备采用shell脚本来进行监控。脚本内容见最后。

首先删除原有的表,重新创建,这个过程中也可以监控redo,undo和执行时间。数据量目前在40万左右,可以看到创建constraint的时候耗费了约70M左右的redo

然后在客户的机器上进行了简单的测试,配置要比本地好很多,测试的数据量是800万的。为了放大某些细节,总结的测试结果如下。

各种多种场景最终都被否定了,最后可以考虑一下把constraint和index分离,加上parallel来处理。

采用这种方式,响应时间和redo的生成量都大幅度降低,从原来的17秒减少到了8秒

脚本如下:

------------------------------------------------------------------------- 
sqlplus -s n1/n1 <<EOF 
set feedback off 
set termout off
set linesize 100 
set pages 50 
col name format a30 
variable redo number 
spool test_before_tmp.log 
@redo_stat.sql 
@undo_stat.sql 
spool off; 
set timing on 
$1 
set timing off 
--alter session enable parallel ddl;
spool test_after_tmp.log 
@redo_stat.sql 
@undo_stat.sql 
spool off; 
EOF 
echo '##################################################' 
echo 'redo, undo stats generated as below' 
echo '##################################################' 
sdiff test_before_tmp.log test_after_tmp.log|grep "|"|awk -F"|" '{print $2}' 
exit

引用到的sql脚本内容如下:

--redo_stat.sql
select a.name ,b.value from v$statname a,v$mystat b 
where a.STATISTIC#=b.STATISTIC# 
and a.name like '%redo%' 
order by a.name;
--undo_stat.sql
select a.name ,b.value from v$statname a,v$mystat b 
where a.STATISTIC#=b.STATISTIC# 
and a.name like '%undo%' 
order by a.name;

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

原文发表时间:2014-05-21

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏VMCloud

【解析向】腾讯云的Windows Server日志配置收集工具是个什么鬼?(1)

楼主在使用腾讯云IaaS时,经常遇到一些疑似平台问题的Windows疑难杂症,通常会向腾讯云工单提交OS工单,让其专业工程师来排查,毕竟我买IaaS的CVM要来...

55116
来自专栏北京马哥教育

三分钟看懂Nginx服务器的缓存原理和机制

作者:LifeIsButA_Span 来源: http://blog.csdn.net/lifeisbuta_span/article/details/7059...

3027
来自专栏小白课代表

软件分享 | VC++ 6.0 (WIN10可用)安装教程

Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Window...

963
来自专栏13blog.site

Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程

写在前面的话 My Blog项目已经开源了两个多月,也收获了不少star,在这里谢谢各位朋友的建议及帮助。由于个人原因,这个开源项目最初的定位其实是一个dock...

3377
来自专栏Java架构师进阶

Java 编写的轻量级高性能手游服务端框架

mmorpg,是一个用java编写的轻量级高性能手游服务端框架。项目提供各种支持快速二次开发的组件,以及对生产环境的服务进行管理的工具。同时,为了使用户能够快速...

654
来自专栏ThoughtWorks

避免CI成为一个安全隐患|洞见

背景 最近临时交接了一个客户测试环境和产品环境的维护工作。交接的客户资产包含:代码库、生产环境主机、测试环境主机、搭建在测试环境主机上的持续集成服务器以及对应的...

3238
来自专栏编程

左手用R右手Python系列——使用多进程进行任务处理

数据抓取中的密集任务处理,往往会涉及到性能瓶颈,这时候如果能有多进程的工具来进行支持,那么往往效率会提升很多。 今天这一篇分享在R语言、Python中使用调用多...

1978
来自专栏Keegan小钢

App架构设计经验谈:业务层的设计

业务层其实并不复杂,但是大部分开发人员对其职责并没有理解清楚,从而使其沦落为一个数据中转站。我之前分享过的Android项目重构之路系列中提到的核心层,其实就是...

662
来自专栏nimomeng的自我进阶

xcbuild可用性分析报告

xcbuild是Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具。

452
来自专栏互联网杂技

2018年6月份GitHub上最热门的开源项目

本篇文章为大家盘点了6月份最热门的GitHub 项目,一起来看看你都知道哪些,或者有哪些你已经在使用的了。

1165

扫描关注云+社区