本系列第 5 部分聚焦於**資料庫層級配置選項**的效能影響。許多 DBA 僅關注執行個體層級設定,忽略資料庫屬性頁中的關鍵選項。本文詳細解析 9 項核心資料庫選項的預設值、效能影響、最佳實踐與檢查腳本,助你建立標準化的資料庫配置基準線。
ALTER DATABASE ... SET OPTION、sp_dboption (已棄用)、SSMS 屬性 → 選項頁。範圍:單一資料庫。sp_configure、SSMS 執行個體屬性。範圍:整個執行個體。本文僅涵蓋資料庫選項。
AUTO_UPDATE_STATISTICS_ASYNC ON (SQL 2005+),改為背景非同步更新,查詢使用舊統計但不阻塞。UPDATE STATISTICS / sp_updatestats 排程在離峰執行。DBCC SHRINKDATABASE。DBCC SHRINKFILE (N, TRUNCATEONLY) 或重建索引後單次縮減。ALTER DATABASE ... SET COMPATIBILITY_LEVEL = 160 並全面回歸測試。DBCC LOGINFO)。SE_MANAGE_VOLUME_NAME 特權)。SELECT
d.name AS DatabaseName,
d.recovery_model_desc AS RecoveryModel,
d.compatibility_level AS CompatLevel,
-- 選項
DATABASEPROPERTYEX(d.name, 'IsAutoClose') AS AutoClose,
DATABASEPROPERTYEX(d.name, 'IsAutoCreateStatistics') AS AutoCreateStats,
DATABASEPROPERTYEX(d.name, 'IsAutoUpdateStatistics') AS AutoUpdateStats,
DATABASEPROPERTYEX(d.name, 'IsAutoShrink') AS AutoShrink,
DATABASEPROPERTYEX(d.name, 'IsReadOnly') AS ReadOnly,
DATABASEPROPERTYEX(d.name, 'IsTornPageDetectionEnabled') AS TornPageDetection,
-- 檔案自動增長
mf.name AS FileName,
mf.type_desc AS FileType,
mf.size * 8. / 1024 AS CurrentSizeMB,
CASE mf.is_percent_growth
WHEN 1 THEN CAST(mf.growth AS VARCHAR(10)) + '%'
ELSE CAST(mf.growth * 8. / 1024 AS VARCHAR(10)) + ' MB'
END AS AutoGrowth,
mf.max_size * 8. / 1024 AS MaxSizeMB
FROM sys.databases d
JOIN sys.master_files mf ON d.database_id = mf.database_id
WHERE d.database_id > 4 -- 排除系統庫
ORDER BY d.name, mf.type_desc;
| 選項 | 基準值 | 備註 |
|---|---|---|
| AUTO_CLOSE | OFF | 生產環境鐵律 |
| AUTO_CREATE_STATISTICS | ON | |
| AUTO_UPDATE_STATISTICS | ON | 搭配 ASYNC ON |
| AUTO_UPDATE_STATISTICS_ASYNC | ON | SQL 2005+ |
| AUTO_SHRINK | OFF | 鐵律 |
| READ_ONLY | 視業務 | 報表/歸檔庫 ON |
| PAGE_VERIFY | CHECKSUM | 取代 TORN_PAGE_DETECTION |
| COMPATIBILITY_LEVEL | 最高等級 | 升級後必改 |
| DATA FILE AUTO GROW | 固定 512MB/1GB | 預配足夠空間 |
| LOG FILE AUTO GROW | 固定 512MB/1GB | 控制 VLF 數量 |
資料庫層級配置選項雖單一資料庫生效,但累積百庫千庫即成系統級效能基線。將上述基準線納入部署清單、自動化巡檢腳本、變更管理流程,確保每個新建/遷移/升級的資料庫皆符合標準,是 DBA 交付高穩定、高效能環境的關鍵基本功。