| 檔案類型 | 副檔名 | 數量 | 核心職責 |
|---|---|---|---|
| 主資料檔 | .mdf | 1 個 | 儲存系統表、使用者資料、索引、配置頁;追蹤其他檔案位置;啟動資料庫的入口點 |
| 次要資料檔 | .ndf | 0~N 個 | 分散儲存使用者資料與索引,支援多檔案群、跨磁碟 I/O 平行化、繞過單一檔案大小限制 |
| 交易記錄檔 | .ldf | 1~N 個 | 記錄所有交易操作(重做/回滾資訊),支援恢復、複寫、CDC、AlwaysOn 等核心功能 |
建立/修改檔案時必須指定:
MyDB_Data)E:\MSSQL\Data\MyDB.mdf)CREATE DATABASE TestDB 最簡單語句下:CREATE DATABASE MyDB
ON PRIMARY (NAME=MyDB_Data, FILENAME='E:\Data\MyDB.mdf', SIZE=4GB, FILEGROWTH=512MB),
FILEGROUP [INDEXES] (NAME=MyDB_Idx, FILENAME='F:\Indexes\MyDB_Idx.ndf', SIZE=2GB, FILEGROWTH=512MB),
FILEGROUP [ARCHIVE] (NAME=MyDB_Arc, FILENAME='G:\Archive\MyDB_Arc.ndf', SIZE=10GB, FILEGROWTH=1GB)
LOG ON (NAME=MyDB_Log, FILENAME='L:\Logs\MyDB.ldf', SIZE=2GB, FILEGROWTH=512MB);
優勢:
BACKUP DATABASE ... FILEGROUP = 'ARCHIVE')BACKUP LOG 截斷,否則無限增長DBCC SQLPERF(LOGSPACE) 與 sys.dm_db_log_space_usage| 誤區 | 事實 |
|---|---|
| 插入資料會平均寫入所有資料檔 | 按比例填滿算法,非輪詢;可用 DBCC SHOWFILESTATS 觀察 |
| NDF 只是備份用 | NDF 是線上儲存主力,支援檔案群架構核心 |
| 縮減資料檔能釋放空間給 OS | DBCC SHRINKFILE 會產生大量碎片,**嚴禁常態化執行** |
| 記錄檔可隨意刪除 | 刪除 .ldf 導致資料庫進入 SUSPECT,需緊急重建 |
Perform Volume Maintenance Tasks 給 SQL 服務帳號)