首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 清空表資料四大方法效能與風險全比較

     編輯:DB2 教學

四種方法詳細對照

方法語法日誌記錄速度可恢復適用場景
1. DELETEDELETE FROM <table>全記錄最慢是小表、需觸發 Trigger、需保留高水位線
2. ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLEALTER TABLE <table> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE不記錄最快否大表、建表時已指定 NOT LOGGED INITIALLY、臨時表清理
3. IMPORT/LOAD FROM NULLIMPORT FROM /dev/null OF DEL REPLACE INTO <table>
LOAD FROM /dev/null OF DEL REPLACE INTO <table> NONRECOVERABLE
IMPORT 記錄
LOAD 可選
快IMPORT 是
LOAD 視模式
大表、需重置高水位線、生產環境常用
4. DROP + CREATEDROP TABLE <table>
CREATE TABLE <table> ...
DDL 記錄極少快(大表最快)否大表、保有 DDL 腳本、需重建索引/權限/觸發器

深度解析各方法

方法一:DELETE —— 最標準但最慢

  • 逐列刪除,產生大量日誌,大表易填滿日誌空間導致失敗。
  • 觸發 DELETE Trigger、檢查 FK 約束。
  • 高水位線不變,表空間不釋放,後續 INSERT 仍從高水位線後寫入。

方法二:NOT LOGGED INITIALLY (NLI) + EMPTY TABLE —— 極速但有前提

  • 前提:建表時必須指定 NOT LOGGED INITIALLY 選項。
  • 僅在當前工作單元內生效,Commit 後屬性消失。
  • 操作不可恢復,失敗導致表標記不可存取需 Drop。
  • 實際清空極快,適合 ETL 暫存表每批次重置。

方法三:IMPORT/LOAD REPLACE —— 生產環境首選

  • REPLACE 模式:先清空表,再載入資料(此處載入空檔案)。
  • IMPORT:記錄日誌,可恢復,速度中等,支援 Trigger/FK。
  • LOAD NONRECOVERABLE:不記錄日誌,速度極快,但表進入「備份待定」狀態,需完整備份後才可恢復。
  • 高水位線重置為 0,表空間實際釋放(視表空間類型)。
  • Unix 用 /dev/null,Windows 需建立空檔案(如 nul 或空文字檔)。

方法四:DROP + CREATE —— 徹底重置

  • 連同索引、權限、Trigger、約束、視圖依賴一併移除。
  • 需完整 DDL 腳本(db2look 可產生)重建所有附屬物件。
  • 大表速度最快,但物件重建成本高,適用結構變更或徹底重置場景。

TRUNCATE TABLE 等效達成

DB2 無 TRUNCATE TABLE 指令。最接近語義且效能最佳為:

LOAD FROM /dev/null OF DEL REPLACE INTO <table> NONRECOVERABLE

或 IMPORT ... REPLACE(需日誌可恢復時)。

選擇決策樹

  1. 表較小、需觸發 Trigger/FK 檢查 → DELETE
  2. 表大、建表時有 NLI 屬性、臨時資料、不需恢復 → ALTER TABLE ... NLI WITH EMPTY TABLE
  3. 表大、生產環境、需重置高水位線、可接受短暫不可恢復窗口 → LOAD NONRECOVERABLE REPLACE
  4. 表大、需恢復能力、或同時重建索引/權限 → IMPORT REPLACE 或 DROP+CREATE

關鍵提醒

  • LOAD NONRECOVERABLE 後必須立即執行完整備份,否則資料庫不可恢復。
  • DROP TABLE 會失效依賴視圖/函數/觸發器,重建時勿遺漏。
  • SMS 表空間 LOAD REPLACE 可能不釋放檔案空間,需 db2dart / REORG 配合。

根據表大小、恢復需求、附屬物件複雜度選擇適當方法,才能在安全與效能間取得平衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved