DB2 大表清空若用 DELETE 逐行記錄日誌、掃描耗時、DMS 表空間不釋放空間,風險極大。本文介紹兩大秒級清空技法:ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 及 空文件 IMPORT REPLACE,並對比 LOAD REPLACE 差異,給出平台差異 (Windows/UNIX) 具體命令。
ALTER TABLE big_table ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;
特性:
-- 1. 導出空文件 (結構同目標表)
EXPORT TO empty.ixf OF IXF MESSAGES export.log
SELECT * FROM big_table WHERE 1=2;
-- 2. 導入替換
IMPORT FROM empty.ixf OF IXF MESSAGES import.log
REPLACE INTO big_table;
IMPORT FROM /dev/null OF DEL REPLACE INTO big_table;
特性:
| 特性 | IMPORT REPLACE | LOAD REPLACE |
|---|---|---|
| 日誌記錄 | 命令級 (極少) | 不記日誌 (需後續備份) |
| 觸發器 | 觸發 | 不觸發 |
| 約束檢查 | 執行 | 可延後 |
| 恢復性 | 完全可恢復 | 標記表空間「備份待定」 |
| 適用場景 | 常規清空、有觸發器/外鍵 | 初始大量載入、數據倉庫刷新 |
REORG 才能釋放空間ALTER TABLE ... WITH EMPTY TABLE (最快、最簡潔)IMPORT REPLACE (Windows 用 IXF、UNIX 用 /dev/null)LOAD REPLACE + 事後立即備份RUNSTATS 更新統計信息「秒級清空」核心在於**避開逐行日誌**、**立即釋放空間**、**保留對象元數據**。根據表依賴關係選擇 ALTER 或 IMPORT,拒絕 DELETE,是大表維護的鐵律。