DB2 for i (i5/OS) V5R4 引入 Index Advisor,自動記錄查詢優化器建議的索引。但隨著業務增長,SYSIXADV 表積累海量建議,存在大量冗余:
Index Advice Condenser(索引建議壓縮器)應運而生,將原始建議聚合為可直接落地的精準索引推薦。
優化器按以下屬性判定是否為「新建議」:
命中即更新:TIMES_ADVISED +1、LAST_ADVISED = CURRENT TIMESTAMP。
關鍵欄位: LEADING_KEYS_ORDER_INDEPENDENT 標識領頭鍵可重排。
示例演進:
| 原始建議序號 | 建議鍵 | 領頭鍵可重排 | 壓縮結果 |
|---|---|---|---|
| 1 | C1, C2, C3 | C1, C2, C3 | 合併為單一索引 (C1, C3, C2, C4) |
| 2 | C1, C3, C2 | C1 | |
| 3 | C1, C3, C2, C4 | C1, C2, C3, C4 |
壓縮器自動識別:若建議 B 的鍵集合包含建議 A,且順序可調整滿足 A,則合併保留 B。
壓縮過程中,實例級欄位被聚合為統計級欄位:
| 欄位 | 壓縮邏輯 | 業務含義 |
|---|---|---|
| TIMES_ADVISED | SUM | 總建議次數,反映索引需求強度 |
| LAST_ADVISED | MAX | 最近一次建議時間,判斷時效性 |
| ESTIMATED_CREATION_TIME | MAX | 最長建索引耗時,評估維護窗口可行性 |
| MOST_EXPENSIVE_QUERY | MAX | 最耗時查詢成本,量化收益上限 |
| AVERAGE_QUERY_ESTIMATE | AVG | 平均查詢成本,評估常規收益 |
| LOGICAL_PAGE_SIZE | MAX | 建議頁面大小,影響存儲效率 |
| TABLE_SIZE | 最新值 | 建議時表規模,關聯創建成本 |
被捨棄欄位:MTI_USED、MTI_CREATED、LAST_MTI_USED、REASON_ADVISED 等臨時索引相關統計。
-- 全 Schema 壓縮建議
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE WHERE table_schema = 'CONDENSE';
-- 單表壓縮建議
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE
WHERE table_name = 'EMPLOYEE' AND table_schema = 'CONDENSE';
-- 高價值建議篩選(平均查詢成本 > 10 秒)
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE
WHERE table_schema LIKE 'Q%' AND average_query_estimate > 10;
SELECT * FROM TABLE(QSYS2.CONDENSE_ADVICE('CRPDTA','B123456')) AS a
WHERE a.table_size > (1024*1024)
AND MONTH(last_advised) = MONTH(CURRENT TIMESTAMP)
ORDER BY average_query_estimate DESC
FETCH FIRST 15 ROWS ONLY;
支持自定義篩選、排序、分頁,適合集成到自動化優化平台。
ESTIMATED_CREATION_TIME 與表寫入頻率,評估 INSERT/UPDATE 性能影響服務端需安裝 V5R4M0 5722-SS1 PTF:SI25391、SI25469、SI25470。客戶端需最新 iSeries Access SP。
Index Advice Condenser 將「被動記錄」升級為「主動推薦」,配合 Navigator 可視化與 UDTF 可編程接口,構建了從發現、聚合、評估到落地的閉環。建議納入週度 DBA 巡檢流程,讓索引策略隨業務演進持續優化。