1. 表分區
將大表資料按範圍(如月份)物理分散至不同檔案群組/磁碟:
- 查詢僅掃描相關分區,避免全表掃描
- I/O 分散至多磁碟,降低爭用
- 適用於大量歷史資料、時間序列表
- 可設定按月自動建立分區
2. 別名優化
- 大型查詢中表名、欄位名使用單字母別名
- 可提升 ~1.5 倍查詢解析速度(減少解析器字串比對開銷)
3. 索引設計與權衡
優點
缺點
- 建立/維護消耗時間,隨資料量增長
- 佔用額外物理空間(叢集索引更大)
- DML 操作需同步維護索引,降低寫入速度
- 碎片化需定期重建/重組
適用性
4. 物化視圖 / 索引視圖
特性
- 實際儲存資料,佔用空間
- 需定期重新整理,消耗資源
- 換取查詢效率與彈性
適用場景
- OLAP:讀多寫少、複雜聚合查詢頻繁
- 不適用 OLTP:高頻寫入導致維護開銷過大
注意事項
- 複雜高耗查詢且高頻使用 → 建物化視圖
- 以空間換時間
- 更新頻繁表謹用
- 選擇合適重新整理策略(完整/增量/排程)
普通視圖 vs 物化視圖
| 特性 | 普通視圖 | 物化視圖 |
| 資料儲存 | 無(虛擬) | 實體儲存 |
| 查詢機制 | 展開為基表查詢 | 直接查詢物化資料 |
| 效能 | 可能降低(多表關聯展開) | 大幅提升 |
| 用途 | 簡化 SQL、權限控制、維度劃分 | 效能優化 |
5. 死鎖與阻塞防範
- 頻繁更新資料避免放入長交易
- 不在資料庫鎖外疊加應用層鎖
- 縮小交易範圍,及時提交
- 避免跨資料庫分散式交易
- 慎用位圖索引(更新易死鎖)
6. 減少 I/O 與網路傳輸
- 單次請求取回所需資料,避免多次往返
- 批量操作用預存程序,減少網路往返
總結
資料庫優化是系統工程:分區解決大表、索引解決查詢、物化視圖解決複雜聚合、鎖設計解決併發、批量處理解決網路。無銀彈,需根據業務負載特徵組合施策。