程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2處理數據由原來六小時優化到二十分鐘(一)

DB2處理數據由原來六小時優化到二十分鐘(一)

編輯:DB2教程

很高興,你閱讀此篇我自己整理的文章,首先需要說明一下,此篇文章適合初學和剛接觸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.BkJia.com/database/201203/122520.html

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


作者 cuiran
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved