資料庫效能優化是系統工程,涵蓋邏輯設計、物理佈署、硬體資源、查詢撰寫與維運監控。本文以 SQL Server 為例,提供結構化優化建議。
SMALLINT 勿用 INT;能用 VARCHAR(20) 勿用 VARCHAR(100)。TEXT/IMAGE/MAX 大型物件 (LOB) 置於專用檔案群組/磁碟。| 元件 | 建議 |
|---|---|
| CPU | 少量用戶可用單核心;生產環境建議多核心 Xeon/EPYC,支援 NUMA 架構。 |
| 記憶體 (RAM) | 關鍵資源。SQL Server 可用 2GB (32-bit) / 無上限 (64-bit)。預留 2-4GB 給 OS。監控 Target Server Memory vs Total Server Memory。 |
| 磁碟子系統 | RAID 10 (資料/記錄/TempDB 分離)、NVMe SSD、多檔案群組平行 I/O。TempDB 建議 1 核心 1 檔案,置於最快儲存體。 |
| 網路 | 千兆/萬兆專用網段,啟用 Jumbo Frames、RSS、RDMA (SMB Direct)。 |
INCLUDE 欄位)、過濾索引 (WHERE 子句)、避免過度索引 (寫入成本)。ALTER INDEX ... REBUILD/REORGANIZE) 依碎片率 ( >30% 重建, 5-30% 重組)。UPDATE STATISTICS ... WITH FULLSCAN)。SELECT *,明確列出欄位。SET NOCOUNT ON 減少網路往返。WHERE id > @last_id ORDER BY id LIMIT 20)。Buffer Cache Hit Ratio, Page Life Expectancy, Batch Requests/sec, SQL Compilations/sec, Lock Waits/sec)。sys.dm_exec_query_stats、sys.dm_exec_requests、sys.dm_os_wait_stats 找出瓶頸等待類型。優化是持續迭代過程:測量 → 分析 → 調整 → 驗證 → 重複。