首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server MDF 與 LDF 檔案差異與管理要點

     編輯:關於SqlServer

核心差異

檔案副檔名用途內容特性
主要資料檔.mdf儲存資料庫資料資料表、索引、視圖、預存程序等所有物件頁面每個資料庫至少一個
次要資料檔.ndf擴充資料儲存同 .mdf,可分散不同磁碟可有零個或多個
交易記錄檔.ldf儲存交易記錄所有修改操作 (INSERT/UPDATE/DELETE) 的記錄、檢查點、備份資訊每個資料庫至少一個

關鍵管理要點

MDF/NDF 資料檔

  • 預設檔案群組 (PRIMARY) 包含 .mdf
  • 可建立使用者檔案群組,將 .ndf 加入,實現表/索引分散儲存
  • 自動成長設定:建議固定大小成長 (如 512MB) 而非百分比
  • 啟用 PAGE_VERIFY CHECKSUM 偵測頁面損壞

LDF 記錄檔

  • 循序寫入,效能極度依賴磁碟 I/O 延遲 → 建議獨立磁碟/RAID 1/10
  • 復原模式決定記錄保留:
    • FULL:完整記錄,需定期記錄備份截斷,支援時間點還原
    • BULK_LOGGED:大量操作最小記錄,需記錄備份
    • SIMPLE:檢查點自動截斷,無法時間點還原
  • 避免記錄檔無限成長:設定合理最大值、監控 log_reuse_wait_desc
  • 絕不可直接刪除 .ldf:會導致資料庫進入 SUSPECT/RECOVERY_PENDING

常見操作

-- 查看檔案資訊
SELECT name, type_desc, physical_name, size/128.0 AS SizeMB, 
       max_size/128.0 AS MaxSizeMB, growth, is_percent_growth
FROM sys.database_files;

-- 修改自動成長 (固定 512MB)
ALTER DATABASE MyDB MODIFY FILE (NAME = MyDB_Data, FILEGROWTH = 512MB);
ALTER DATABASE MyDB MODIFY FILE (NAME = MyDB_Log, FILEGROWTH = 512MB);

-- 縮減記錄檔 (FULL 模式需先備份記錄)
BACKUP LOG MyDB TO DISK = 'path\log.trn';
DBCC SHRINKFILE (MyDB_Log, 1024);  -- 目標 1GB

-- 新增 NDF 檔案
ALTER DATABASE MyDB ADD FILE (
    NAME = MyDB_Data2,
    FILENAME = 'E:\Data\MyDB_Data2.ndf',
    SIZE = 1GB,
    FILEGROWTH = 512MB
) TO FILEGROUP [UserData];

災難恢復關鍵

  • 備份策略:完整備份 + 差異備份 + 記錄備份 (FULL 模式)
  • .mdf + .ldf 必須成對備份/還原 (檔案層級快照除外)
  • 3. 記錄檔損壞:若有完整備份鏈,可尾記錄備份 → 還原至時間點 4. 資料檔損壞:需從備份還原,或嘗試 DBCC CHECKDB REPAIR (風險高)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved