DB2处理数据由原来六小时优化到二十分钟(一)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 22:07 点击:

很高兴,你阅读此篇我自己整理的文章,首先需要说明一下,此篇文章适合初学和刚接触DB2的开发人员阅读,如果你自认觉得能力很好,可以绕开。

      此篇文章也是结合我实际经验对其进行整理,也是自己的一个总结。在前段时间给银行做项目,由于银行的数据是由第三方公司开发,故我们需要的接口数据需要我们自己来处理,经过几次交涉,最终决定我们自己来处理数据。当看到数据中心发来的数据文件时,哇,一下处理16张表,表关系如何,我们还要自己去分析。经过一周时间对表关系进行分析,然后着手准备如何将16张表数据整理成一张我们系统需要的接口表,这也是一个难题。

在这里大概说一下处理数据的要求:

1. 根据业务关系从16张表取出一张表数据。

2. 在银行提供的16张表对应的txt文件有一半的数据量在百万以上。并且每天都是全量

3. 必须每天将16张表数据导入DB2数据库中,导入之前需要先清空16张表

4.必须在早上把数据处理完毕。不能影响白天业务。

根据以上要求,自己开始着手写处理数据,想到对数据处理,就采用了DB2的存储过程。但是像清空表等很多都是影响效率的。

第一:清空表优化

开始我们清空表用的是

db2 delete from tablename;

但是这样速度是超级慢,并且如果采用delete会记录日志,影响数据库性能。

后来我们采用的是:

db2 import from d:\empty.del of del replace into tablename

empty.del是一个空的文件。这样执行起来只需几秒时间就将一个表清空了。

还可以采用:

 DECLARE VAR_sql varchar(128);--
 SET VAR_sql='ALTER TABLE AUTEK.UTMCA ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE';--
 EXECUTE IMMEDIATE VAR_sql; --这种删除也是很快的


第二:删除优化

在处理DB2数据过程中少用删除delete操作,用select比删除操作快很多。

第三:重组表结构

当我们使用load from 数据时候突然中断就会导致 SQL0668N 具体参考:

http://www.2cto.com/database/201203/122520.html

此时我们需要db2 load from d:\empty.del of del terminate into tablename.


作者 cuiran
 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • db2管理工具小结
    • DB2数据库的导出与导入(Windows客户端)
    • db2 CLP中如何换行
    • DB2查看表结构及所用表语句
    • DB2 · CREATE TABLESPACE
    • 使用DB2对象:创建模式、表和视图
    • DB2数据库逻辑卷的复制
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1