疑難排解:全文檢索索引效能因篩選處理程序而變慢
擴展全文檢索索引時,全文檢索引擎會使用兩種篩選:多執行緒和單一執行緒。某些文件 (例如 Microsoft Word 文件) 是使用多執行緒篩選進行篩選。其他文件 (例如 Adobe Acrobat Portable Document Format (PDF) 文件) 則是使用單一執行緒篩選進行篩選。
基於安全性理由,在 SQL Server 2008 中,篩選是由篩選背景程式主機處理序載入。伺服器執行個體會針對所有多執行緒篩選使用多執行緒處理序,而針對所有單一執行緒篩選使用單一執行緒處理序。當使用多執行緒篩選的文件包含使用單一執行緒篩選的內嵌文件時,全文檢索引擎就會針對內嵌文件啟動單一執行緒處理序。例如,如果遇到包含 PDF 文件的 Word 文件,全文檢索引擎就會針對 Word 內容啟動多執行緒處理序,而針對 PDF 內容啟動單一執行緒處理序。不過,單一執行緒篩選在此環境下可能無法正常運作,而且可能會使篩選處理序不穩定。在經常會有這類內嵌的特定情況下,不穩定可能會導致篩選處理序損毀。發生這個狀況時,全文檢索引擎就會將任何失敗的文件 (例如,包含內嵌 PDF 內容的 Word 文件) 重新路由傳送至單一執行緒篩選處理序。如果經常發生重新路由傳送的狀況,則會導致全文檢索索引處理序的效能降低。
若要解決這個問題,請將容器文件 (在此範例中是 Word) 的篩選標示成單一執行緒篩選。您可以變更篩選登錄值,以便將給定的篩選標示成單一執行緒篩選。若要將某個篩選標示成單一執行緒篩選,您必須將此篩選的 ThreadingModel 登錄值設定為 Apartment Threaded。如需有關單一執行緒 Apartment 的詳細資訊,請參閱<了解和使用 COM 執行緒模型>(英文)。