문제 해결: 필터링 프로세스로 인한 전체 텍스트 인덱싱 성능 저하
전체 텍스트 엔진은 전체 텍스트 인덱스를 채울 때 다중 스레드 및 단일 스레드라는 두 가지 필터 유형을 사용합니다. Microsoft Word 문서와 같은 일부 문서는 다중 스레드 필터를 사용하여 필터링됩니다. 그러나 Adobe Acrobat PDF(Portable Document Format) 문서와 같은 다른 문서는 단일 스레드 필터를 사용하여 필터링됩니다.
보안을 위해 SQL Server 2008에서는 필터가 필터 데몬 호스트 프로세스에 의해 로드됩니다. 서버 인스턴스는 모든 다중 스레드 필터에 대해 다중 스레드 프로세스를 사용하고 모든 단일 스레드 필터에 대해 단일 스레드 프로세스를 사용합니다. 다중 스레드 필터를 사용하는 문서에 단일 스레드 필터를 사용하는 포함 문서가 있을 경우 전체 텍스트 엔진은 해당 포함 문서에 대해 단일 스레드 프로세스를 시작합니다. 예를 들어 PDF 문서가 포함된 Word 문서가 있을 경우 전체 텍스트 엔진은 Word 콘텐츠에 대해 다중 스레드 프로세스를 사용하고 PDF 콘텐츠에 대해 단일 스레드 프로세스를 시작합니다. 그러나 이러한 환경에서는 단일 스레드 필터가 제대로 작동하지 않을 수 있으며 이로 인해 필터링 프로세스가 불안정해질 수 있습니다. 이러한 포함 작업이 자주 수행되는 특정 환경에서는 필터링 프로세스 불안정화로 인해 해당 프로세스가 충돌할 수 있습니다. 충돌이 발생하면 전체 텍스트 엔진은 실패한 문서(예: 포함된 PDF 콘텐츠가 있는 Word 문서)를 단일 스레드 필터링 프로세스로 모두 다시 라우팅합니다. 다시 라우팅 작업이 자주 발생하면 전체 텍스트 인덱싱 프로세스의 성능이 저하됩니다.
이 문제를 해결하려면 컨테이너 문서(이 경우 Word)의 필터를 단일 스레드 필터로 표시합니다. 필터 레지스트리 값을 변경하여 지정된 필터를 단일 스레드 필터로 표시할 수 있습니다. 필터를 단일 스레드 필터로 표시하려면 필터의 ThreadingModel 레지스트리 값을 Apartment Threaded로 설정해야 합니다. 단일 스레드 아파트에 대한 자세한 내용은 COM 스레딩 모델 이해 및 사용(Understanding and Using COM Threading Models)을 참조하십시오.