SQL Server 2000 安裝完成後會建立四個系統資料庫,它們是整個引擎運行的基石:
| 資料庫 | 核心功能 | 備份優先級 | 備註 |
|---|---|---|---|
| master | 儲存所有伺服器層級資訊:登入帳號、密碼雜湊、連結伺服器、配置選項、所有使用者資料庫的建立資訊與檔案路徑 | 最高 | 損毀將導致整個 SQL Server 癱瘓,必須定期完整備份 |
| model | 新資料庫的範本。CREATE DATABASE 實際上是複製 model 然後擴展空白資料頁 |
中 | 修改 model 中的復原模式、預設排序規則、使用者定義型別會影響後續新建資料庫 |
| tempdb | 全域暫存資源:暫存表(#temp)、表變數、游標、工作表、版本存放區、線上索引建立暫存空間 |
無需備份 | 每次服務重啟重建;可預先調整大小/檔案數減少自動擴展爭用 |
| msdb | SQL Server Agent 作業、排程、警示、操作員、備份/還原歷史、複寫、記錄傳送、資料庫郵件 | 高 | 遺失 msdb 將導致所有 Agent 作業、歷史記錄消失 |
以 1,000 萬筆 Employee 表查詢「來自北京的員工」為例:
| 特性 | 叢集索引 | 非叢集索引 |
|---|---|---|
| 每張表數量 | 1 | 最多 249 (SQL 2000) / 999 (SQL 2005+) |
| 資料儲存順序 | 葉層即資料列,依索引鍵物理排序 | 葉層含索引鍵 + 書籤 (RID 或叢集鍵) |
| 範圍查詢效能 | 極佳(資料連續儲存) | 需書籤查找,隨機 IO |
| 插入/更新成本 | 較高(需維持物理順序) | 較低(僅更新索引樹) |
| 適用場景 | 範圍查詢、排序、主鍵、外鍵 | 點查詢、覆蓋索引、高選擇性條件 |
INT、BIGINT、SMALLINT、TINYINT;避免 CHAR/VARCHAR、GUID 作叢集鍵IDENTITY 整數最理想,減少分頁分裂WHERE、JOIN、ORDER BY 欄位,建立覆蓋索引sys.dm_db_index_usage_stats 檢視未使用索引並移除FILLFACTOR = 70-80 預留空間-- 檢視碎片
DBCC SHOWCONTIG('TableName') WITH ALL_INDEXES;
-- 線上整理碎片 (SQL 2000 Enterprise)
DBCC INDEXDEFRAG(db_name, 'TableName', 'IndexName');
-- 離線重建 (鎖定表)
DBCC DBREINDEX('TableName', 'IndexName', 80); -- 80% fillfactor
INDEXDEFRAG 線上操作、可中斷、每 5 分鐘回報進度;DBREINDEX 離線但能完全重建統計資料與頁面密度。
sp_delete_backuphistoryDBCC CHECKDB 所有系統庫tempdb 爭用(PAGELATCH_EX、SGAM 頁面)