SQL Server 2005 及之前:全文檢索為外部服務(Microsoft Search Service),資料需跨程序傳輸至外部索引器,備份/還原不包含全文目錄,記憶體/CPU 無法與資料庫引擎協調。
SQL Server 2008:全文檢索內建於資料庫引擎,共享緩衝池、排程器、鎖管理器,支援隨資料庫備份/還原,資源動態平衡。
Brent Ozar(團隊 DBA)與 SQL Server 產品組合作測試後結論:架構根本限制無法在可接受時間內修復。團隊規劃遷移至 Lucene.NET(後來演進為 Elasticsearch),徹底移除內建全文檢索依賴。
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| SQL 內建全文檢索 (2008+) | 零外部相依、隨資料庫備份、T-SQL 整合 | 高頻寫入+熱門詞查詢鎖爭用、排名功能弱 | 低寫入、文件量<百萬、簡單關鍵字搜尋 |
| Lucene.NET / Elasticsearch | 極高效能、豐富排名/分面/高亮、水平擴展 | 需額外基礎設施、資料同步複雜度 | 高併發、大規模、複雜搜尋需求 |
| Azure Cognitive Search | 全託管、AI 擴充、自動縮放 | 雲端綁定、成本隨規模增長 | 雲端原生應用、需認知技能 |
ALTER DATABASE SET READ_COMMITTED_SNAPSHOT ON,讀不阻寫、寫不阻讀。CONTAINS/FREETEXT。FILLFACTOR,定期 UPDATE STATISTICS。ALTER FULLTEXT INDEX SET CHANGE_TRACKING AUTO(非同步)而非即時更新。tempdb、全文目錄放置於獨立 SSD,減輕 I/O 爭用。從 2005 升級 2008 後,務必執行完整負載測試:
sys.dm_tran_locks、sys.dm_os_wait_stats(LCK_M_S、FT_IFTS_SCHEDULER_IDLE_WAIT)SQL Server 2008 全文檢索架構雖理論優雅,但在「高寫入 + 高頻熱門詞查詢」混合負載下暴露資源共享的致命缺陷。StackOverflow 案例證明:對搜尋為核心業務的系統,專用搜尋引擎仍是正解。升級前請三思業務負載特性,必要時規劃異構搜尋架構。