循序渐进调优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 条评论
登录 后参与评论

相关文章

来自专栏日常分享

RMAN 增量备份级别说明

  通过Bat批处理调用RMan是我们定时备份数据库的好帮手,但是RMan的备份级别需要我们好好了解一下。

721
来自专栏顶级程序员

Flask 1.0 终于发布,放弃支持 Python 2.6 和 Python 3.3

源 | 开源中国、Flask 官方 综合整理 | Python 开发者(PythonCoder)

954
来自专栏IMWeb前端团队

作为一个前端,可以如何机智地弄坏一台电脑?

有人说,前端的界限就在浏览器那儿。 无论你触发了多少bug,最多导致浏览器崩溃,对系统影响不到哪去。 这就像二次元各种炫酷的毁灭世界,都不会导致三次元的世界末日...

2120
来自专栏TSW

这个框架的官网居然放了这种照片......

1202
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-19定期处理-AFAB折旧过帐运行

4.7.3 AFAB折旧过帐运行 起初过帐至固定资产会更改资产会计中的计划折旧。然而,资产负债表和损益表的累计折旧科目和折旧科目并不会立即更新。直到执行定期折...

3317
来自专栏FreeBuf

新手上路 | 看我如何发现大疆公司网站的一个小漏洞

本文中,孟加拉国安全研究者Yeasir Arafat讲述了他对大疆无人机公司的一次漏洞测试,其通过漏洞利用,最终可获取到大疆公司包括用户IP在内的一些用户注册信...

3535
来自专栏FreeBuf

DIY一个专属HID注入设备吧

*本文原创作者:kincaid,本文属FreeBuf原创奖励计划,未经许可禁止转载

920
来自专栏AhDung

【工具】清理Windows Installer冗余文件(支持64位NT6.x系统)

Windows NT 5.x/6.x 32及64位所有系统。需.net framework 2.0运行环境

882
来自专栏微信公众号:Java团长

我的编码习惯 —— 日志规范

开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。

722
来自专栏HaHack

化繁为简的企业级 Git 管理实战(四):多 Gitlab 数据同步

1396

扫码关注云+社区