Sql-Server-2008

在大表上維護全文索引

  • March 19, 2021

我在 SQL Server 2008 上,並且有一個用於報告目的的表,其中包含 500,000 條記錄,很容易達到數百萬。該表將使用全文索引在少數列上進行快速搜尋。

由於這是一個報告表而不是源事務表,因此有時會添加新記錄,而有時由於源表中正在進行的更改而必須刪除現有記錄。

我的問題是關於建構(持續)報告表和維護該表的全文索引的最佳方式。

添加全文索引後,我應該:

  1. 不理會索引,並酌情刪除/添加記錄
  2. 保留索引,截斷報告表,然後插入所有適當的記錄
  3. 其他?

到目前為止,我在研究時遇到過這些文章,但這種情況的最佳實踐並不明顯。

  1. https://docs.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search?redirectedfrom=MSDN&view=sql-server-ver15
  2. https://techcommunity.microsoft.com/t5/datacat/best-practices-for-integrated-full-text-search-ifts-in-sql-2008/ba-p/305000
  3. 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 在可擴展性和性能方面引入了實質性改進,因此請盡可能升級。

至於如何管理插入和更新,只需更新您通常會添加的行。我不建議截斷/重新載入,否則不要擔心。

引用自:https://dba.stackexchange.com/questions/41028