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

2022-04-08 11:35:01 字數 1105 閱讀 1012

此篇文章也是結合我實際經驗對其進行整理,也是自己的乙個總結。在前段時間給銀行做專案,由於銀行的資料是由第三方公司開發,故我們需要的介面資料需要我們自己來處理,經過幾次交涉,最終決定我們自己來處理資料。當看到資料中心發來的資料檔案時,哇,一下處理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 具體參考:

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

作者 cuiran

DB2 處理刪除表中資料特別慢

前兩天公司測試人員發現乙個刪除資料的job在開發環境中能3分鐘左右刪除完所需資料,大約200萬條,而在測試環境速度不到10 rows s.最終這個問題的解決方法是在測試環境中,在目標表的子表中新增了乙個索引,然後速度就跟開發環境差不多了。這裡主要說一些查詢的思路。1.剛開始開發環境也很慢,首先檢查一...

C Tips2 處理資料

1.以兩個下劃線或大寫字母和下劃線開始的變數不違法,但可能會導致不確定性。單下劃線開頭用作全域性識別符號。2.c 提供一種靈活的標準 3.在climits 中包含了一些限制資訊,如int max為最大的int,char bit為位元組位數。4.c 新增了一種c中沒有的初始化語句 int new in...

DB2資料庫碎片處理

不知道各位大神有木有遇到過資料庫碎片問題。小弟也是最近第一次接觸到資料庫還有碎片這玩意。首先來說下db2資料庫的報錯資訊 在對一張表進行insert,update,delete時發現一直都在報如下錯誤資訊 後來去網上找了一些資料,說是db2的碎片引起。我就好奇,為啥會出現這種情況。結果發現是我頻繁的...