一、 資料檔案類型
| 類型 | 副檔名慣例 | 用途 | 數量 |
| 主資料檔 | .mdf | 啟動資訊、系統表、使用者資料/索引、指向其他檔案的指標 | 每資料庫恰好 1 個 |
| 次要資料檔 | .ndf | 跨磁碟分散資料、檔案群組管理、大型資料庫擴展 | 0 或多個 |
| 交易日誌檔 | .ldf | 記錄所有交易操作,支援復原/還原/複寫 | 至少 1 個 |
注意: 副檔名非強制,但強烈建議遵循慣例以利維運辨識。
二、 邏輯與實體檔案名稱
- 邏輯名稱: T-SQL 陳述式中使用 (如 `ALTER DATABASE ... MODIFY FILE (NAME = logical_name ...)`),資料庫內唯一,遵循識別碼規則。
- 實體名稱: 作業系統檔案系統完整路徑 (含檔名)。
- 查詢對應:
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('MyDB');
三、 檔案位置資訊儲存雙重機制
SQL Server 在兩處記錄檔案位置:
master 系統資料庫 (`sys.master_files` / `sys.databases`)。
- 資料庫自身的主檔案 (Boot Page, Page 0)。
例外情況 (引擎讀取主檔案位置):
- SQL Server 7.0 → 2000 升級過程。
- 還原 `master` 資料庫後。
- 執行 `sp_attach_db` / `CREATE DATABASE ... FOR ATTACH` 附加資料庫時。
四、 空間配置單位:擴展區與頁面
| 單位 | 大小 | 組成 | 說明 |
| 頁面 | 8 KB | — | I/O 基本單位,單一物件專屬 |
| 擴展區 | 64 KB | 8 個連續頁面 | 空間配置基本單位 |
| 混合擴展區 | 64 KB | 最多 8 個不同物件共用 | 新物件前 8 頁配置於此 |
| 統一擴展區 | 64 KB | 單一物件專用 | 物件超過 8 頁後配置 |
五、 自動成長與配置策略
- 新建物件 → 尋找有空間的混合擴展區 → 配置頁面。
- 物件增長 → 持續使用混合擴展區直到佔滿 8 頁。
- 超過 8 頁 → 配置統一擴展區。
- 所有檔案群組無空間且啟用「自動成長」 → 循環演算法擴展各檔案。
六、 最佳實務建議
- 預先規劃大小: 依預估資料量設定初始大小,避免頻繁自動成長造成碎片與效能抖動。
- 固定成長量: 以 MB 為單位 (如 256/512 MB) 而非百分比,確保可預測增長。
- 檔案群組隔離: 將大型資料表、索引、LOB 資料、系統表分置不同檔案群組,對應不同磁碟/儲存層。
- 啟用瞬間檔案初始化: 服務帳號授予 `SE_MANAGE_VOLUME_NAME` (執行量大小維護權限),資料檔擴展跳過清零大幅加速 (日誌檔不適用)。
- 監控碎片: 定期 `DBCC SHOWCONTIG` / `sys.dm_db_index_physical_stats` 檢查並重建索引。