自 DB2 9.7 起,三大系統目錄表新增 LASTUSED 欄位:
SYSCAT.INDEXESSYSCAT.TABLESSYSCAT.PACKAGES
SELECT INDSCHEMA, INDNAME, TABNAME
FROM SYSCAT.INDEXES
WHERE LASTUSED = '01/01/0001';
LASTUSED 記錄「最後存取時間」,但 DB2 內部更新此欄位時間也會被視為存取,**不保證 100% 準確**
DB2PD -D SAMPLE -TCBSTATS INDEX
| 欄位 | 含義 | 判斷依據 |
|---|---|---|
| SCANS | 索引掃描次數 | SCANS=0 且資料庫運行較久 = 未使用 |
| IID | 索引內部 ID | 需關聯 SYSCAT.INDEXES 取得索引名稱 |
| TableName | 所屬資料表 | 確認索引對應實體表 |
TCB Index Stats: Address TableName IID EmpPgDel RootSplits BndrySplts PseuEmptPg Scans 0x7A0ABDA8 SYSTABLES 9 0 0 0 0 0 0 0x7A0ABDA8 SYSTABLES 8 0 0 0 0 0 0
→ IID 8、9 對應索引自資料庫啟動以來 **SCANS=0**,為未使用候選者。
| 方法 | 優勢 | 劣勢 | 建議用途 |
|---|---|---|---|
| LASTUSED 查詢 | SQL 簡單、持久儲存、跨重啟保留 | 可能誤判 (內部更新視同存取) | 日常巡檢、長期趨勢分析 |
| db2pd -tcbstats | 記憶體級即時、精準掃描計數 | 資料庫重啟歸零、輸出龐大需解析 | 精準審計、上線前驗證 |
db2pd 發現長期未用索引SYSCAT.INDEXES.LASTUSED 與 db2pd SCANS 結果