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

2021-05-24 12:55:53 字數 745 閱讀 9246

前兩天公司測試人員發現乙個刪除資料的job在開發環境中能3分鐘左右刪除完所需資料,大約200萬條,而在測試環境速度不到10 rows/s.

最終這個問題的解決方法是在測試環境中,在目標表的子表中新增了乙個索引,然後速度就跟開發環境差不多了。這裡主要說一些查詢的思路。

1. 剛開始開發環境也很慢,首先檢查一下job的warning,發現表被鎖著,然後用db2top監視發現有很多使用者連著資料庫,但沒有發現有lock wait,也不管了,先斷開其它使用者試一下。重啟job後發現速度就上去了。。。

2.後來在測試環境中,只有job連資料庫,沒有別的使用者連線,不可能是被鎖,所以開始檢查測試環境的表的索引,目標表,其父表,子表,發現索引跟開發環境是一樣的,然後reorg這些表後,runstatus。。。。還是沒有作用

3.把job中的刪除資料做成乙個sql指令碼,直接在資料庫執行比較速度(懷疑不是資料庫問題),發現直接執行,在開發環境的速度是測試環境的20倍左右。

4. 用db2advis -d $dbname -i $sqlfilename來讓系統自動優化,裡面提示了建立索引的方法,照著建立,然後執行第三步,發現兩邊的速度幾乎相當,所以感覺速度起來了。

5. 再用job在測試環境測試,還是原來的速度。。。後來睡覺了,另乙個dba接著查詢。

6.第二天告訴問題解決了,只是建立了乙個索引,發現這個索引和我用db2advis得到的很像(命名方式上),只是有個列不一樣,懷疑是他後來又執行了一次db2advis -d $dbname -i $sqlfilename得到的這個結果。

db2在頁面刪除一條資料 db2刪除表中資料

db2資料庫系統建表後,難免會有將表中資料清空的需求,本文將為您介紹db2資料庫中四種資料刪除的方法,供您參考,您可以根據實際情況來進行選擇,希望能對有所幫助。1.使用 delete 語句,即 delete from 該語句將清除表中所有資料,但由於這一操作會記日誌,因此執行速度會相對慢一些,另外要...

db2在頁面刪除一條資料 db2刪除表中資料

db2資料庫系統建表後,難免會有將表中資料清空的需求,本文將為您介紹db2資料庫中四種資料刪除的方法,供您參考,您可以根據實際情況來進行選擇,希望能對有所幫助。1.使用 delete 語句,即 delete from 該語句將清除表中所有資料,但由於這一操作會記日誌,因此執行速度會相對慢一些,另外要...

DB2清空表中資料

1.not logged initially的使用 alter talbe 模式名 schema 表名 activate not logged initially with empty table b 說明 b 這個方法僅在所操作的表在建立時選擇了not logged initially選項進行定義...