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

DB2 未使用索引/資料表/套件精準發現術:LASTUSED 欄位與 db2pd 實戰技法

     編輯:DB2 教學

DB2 9.7+ 內建追蹤機制:LASTUSED 欄位

自 DB2 9.7 起,三大系統目錄表新增 LASTUSED 欄位:

  • SYSCAT.INDEXES
  • SYSCAT.TABLES
  • SYSCAT.PACKAGES

快速查詢未使用索引


SELECT INDSCHEMA, INDNAME, TABNAME
FROM SYSCAT.INDEXES
WHERE LASTUSED = '01/01/0001';

限制與注意事項

  • LASTUSED 記錄「最後存取時間」,但 DB2 內部更新此欄位時間也會被視為存取,**不保證 100% 準確**
  • 資料庫重啟後資訊持久保留,優於記憶體級統計
  • DB2 for z/OS 早已具備此功能,LUW 版本現已對齊

精準發現神器:db2pd 工具

指令語法


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記憶體級即時、精準掃描計數資料庫重啟歸零、輸出龐大需解析精準審計、上線前驗證

實務操作建議

  1. 資料庫穩定運行 ≥ 1 個月後執行 db2pd 發現長期未用索引
  2. 交叉驗證 SYSCAT.INDEXES.LASTUSED 與 db2pd SCANS 結果
  3. 候選索引評估:外鍵支援、唯一性約束、未來查詢規劃前再決定 DROP
  4. 建立定期 (月/季) 索引使用率報表納入 DBA 例行作業
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved