Sql-Server-2008
在大表上維護全文索引
我在 SQL Server 2008 上,並且有一個用於報告目的的表,其中包含 500,000 條記錄,很容易達到數百萬。該表將使用全文索引在少數列上進行快速搜尋。
由於這是一個報告表而不是源事務表,因此有時會添加新記錄,而有時由於源表中正在進行的更改而必須刪除現有記錄。
我的問題是關於建構(持續)報告表和維護該表的全文索引的最佳方式。
添加全文索引後,我應該:
- 不理會索引,並酌情刪除/添加記錄
- 保留索引,截斷報告表,然後插入所有適當的記錄
- 其他?
到目前為止,我在研究時遇到過這些文章,但這種情況的最佳實踐並不明顯。
- https://docs.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search?redirectedfrom=MSDN&view=sql-server-ver15
- https://techcommunity.microsoft.com/t5/datacat/best-practices-for-integrated-full-text-search-ifts-in-sql-2008/ba-p/305000
- https://social.msdn.microsoft.com/Forums/en-US/c743f6e4-88c6-478b-954b-ba8207e391c5/sql-2005-full-text-index-rebuild-nightly-best-approach?forum=sqldatabaseengine
SQL Server 中的全文應該可以輕鬆跟上您的工作量。我目前在 SQL Sever 中支持大約 500,000 行的全文索引,每天插入和刪除 125,000 行。查詢負載峰值約為 200 次全文搜尋/秒。響應時間在 0.5 到 1.5 秒範圍內相當一致。
全文推薦
- 使用自動更改跟踪。它只是工作,你不必安排任何事情。
- 為全文填充錯誤創建 sql 代理警報。人口可能會失敗(他們很少這樣做)。當它們確實失敗時,您必須手動恢復它們。讓 sql 代理作業啟動“myTable RESUME POPULATION 上的 ALTER FULLTEXT INDEX”使其成為非事件。
- 如果您的查詢負載和更新量都非常高,請考慮跟踪標誌 7646。此標誌適用於 2008/2008 R2(不是 2012)。它減少了對內部資料結構的一些阻塞,並記錄在 SharePoint 最佳實踐文件中。(你可能不需要這個)
- 否則,您可能不需要進行任何額外的調整。它通常可以正常工作。
Sql 2012 在可擴展性和性能方面引入了實質性改進,因此請盡可能升級。
至於如何管理插入和更新,只需更新您通常會添加的行。我不建議截斷/重新載入,否則不要擔心。