추적이있는 전체 텍스트 카탈로그가 변경됩니까? 해당 테이블에 대한 변경 내용 추적을 사용하지 않으면 자동으로 자동 업데이트됩니까?


12

전체 텍스트 인덱스를 최신 상태로 유지하려는이 데이터베이스 테이블이 있습니다. 그러나 나는 그것이 전혀 일어나고 있지 않다.

여기 내가보고있는 것이 있습니다 ...

전체 텍스트 카탈로그 속성

그러나 테이블 자체에 ...

여기에 이미지 설명을 입력하십시오

이것이 자동으로 일어나지 않는 이유 일 수 있습니까?


명확성을 위해 어떤 로그를 참조하고 있습니까?
Mike Zalansky

@mikezalansky는 전체 텍스트 로그를 찾을 수 있습니다(..\MSSQL\Log\SQLFT*)
Kin Shah

답변:


14

잘못된 장소를보고 있습니다.

다음과 같이 확인해야합니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

T-SQL 사용 ..

Use database_name
go
ALTER FULLTEXT INDEX ON schema.table_name SET CHANGE_TRACKING AUTO;

완료되면 마지막으로 채워진 날짜 시간의 상태를 확인할 수 있습니다

-- script source : http://stackoverflow.com/a/10505496/1387418
-- Modified by Kin on Dec 14' 2015 to reflect the FTCatalogName
DECLARE @CatalogName VARCHAR(MAX)
SET     @CatalogName = 'AW2008FullTextCatalog' -- change here !

SELECT name as FTCatalogName, 
    DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
    ,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
        WHEN 0 THEN 'Idle'
        WHEN 1 THEN 'Full Population In Progress'
        WHEN 2 THEN 'Paused'
        WHEN 3 THEN 'Throttled'
        WHEN 4 THEN 'Recovering'
        WHEN 5 THEN 'Shutdown'
        WHEN 6 THEN 'Incremental Population In Progress'
        WHEN 7 THEN 'Building Index'
        WHEN 8 THEN 'Disk Full.  Paused'
        WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
FROM sys.fulltext_catalogs

여기에 이미지 설명을 입력하십시오

데이터를 삽입하십시오 ..

insert into HumanResources.JobCandidate
(BusinessEntityID, Resume, ModifiedDate)
values 
    (4, NULL, DEFAULT)

이제 FT 카탈로그가 업데이트되었음을 ​​알 수 있습니다.

여기에 이미지 설명을 입력하십시오

로그 ( ..\MSSQL\Log\SQLFT*)에도 아래 메시지가 표시됩니다 ...

2015-12-14 12 : 36 : 51.29 spid50s 정보 : 테이블 또는 인덱싱 된 뷰 '[AdventureWorks2012]. [HumanResources]. [JobCandidate]'(테이블 또는 인덱싱 된 뷰 ID '1589580701', 데이터베이스 ID '에 대해 전체 텍스트 자동 채우기 완료 5 '). 처리 된 문서 수 : 1. 실패한 문서 수 : 0. 재 시도 할 문서 수 : 0.

에서 BOL :

기본적으로 또는 CHANGE_TRACKING AUTO를 지정하면 전체 텍스트 엔진이 전체 텍스트 인덱스에서 자동 채우기를 사용합니다. 초기 전체 채우기가 완료된 후 기본 테이블에서 데이터가 수정 될 때 변경 내용이 추적되고 추적 된 변경 내용이 자동으로 전파됩니다. 전체 텍스트 인덱스는 백그라운드에서 업데이트되므로 전파 된 변경 내용이 인덱스에 즉시 반영되지 않을 수 있습니다 .

기본적으로 SQL Server는 새 전체 텍스트 인덱스가 생성되는 즉시 완전히 채 웁니다. 그러나 전체 인구는 상당한 양의 자원을 소비 할 수 있습니다. 따라서 피크 기간 동안 전체 텍스트 인덱스를 만들 때 특히 전체 텍스트 인덱스의 기본 테이블이 큰 경우 피크가 아닌 시간까지 전체 채우기를 지연시키는 것이 가장 좋습니다. 그러나 인덱스가 속한 전체 텍스트 카탈로그는 모든 전체 텍스트 인덱스가 채워질 때까지 사용할 수 없습니다.

또한 전체 텍스트 인덱스의 성능 향상을 참조하십시오.


감사! 내가보고있는 문제는 수동으로 인덱스를 다시 작성하기 전까지는 전혀 업데이트되지 않는 이유입니다. 관련이 있는지 확실하지 않지만이 문제가 가장 많은 것으로 보이는 데이터베이스는 미러링되는 데이터베이스입니다.
MetaGuru

Issue I am looking at is why it doesn't seem to update at all until I manually rebuild the index.내가 보여준대로 설정 했습니까? 많은 변화가 있다면, 이후 시간이 좀 걸릴 것입니다The full-text index is updated in the background, however, so propagated changes might not be reflected immediately in the index.
Kin Shah

네, 당신이 보여준 장소를 확인했고 예제에서와 같이 올바르게 구성되었습니다 ... 이상하게 로그 가이 인덱스가 마지막으로 업데이트되었다고 말한 시간은 몇 주 전조차도, 새로운 행이 마지막으로 추가 된 시간과 비교되었습니다. 이 권한에 따라 새 행이 추가 될 때 실행됩니까?
MetaGuru

1
예 .. 테스트 한 다음 답변으로 게시했습니다.
Kin Shah

1

어떤 이유로, 보조 가용성 그룹 데이터베이스 복제본이 인수되어 기본 복제본이 된 후 전체 텍스트 인덱서는 SQL 2012 데이터베이스 중 하나에 대한 자동 채우기를 중지했습니다.

전체 텍스트 인덱스를 삭제하고 자동 채우기가 설정된 테이블에서 다시 작성한 후 자동 채우기가 다시 시작되었습니다. SQL Management Studio 및 전체 텍스트 인덱스 작성 마법사를 사용하여 인덱스를 다시 작성했습니다.

데이터의 전체 인덱싱을 실행하는 데 시간이 얼마나 걸릴지 걱정했습니다. 나는 547619 레코드가있는 테이블에서 3 개의 텍스트 열을 다시 인덱싱하는 데 약 5 분 밖에 걸리지 않았다는 사실에 놀랐습니다.

질문에 언급 된 테이블 레벨 변경 추적 설정은 사용 불가능한 상태로 남아 있습니다. 따라서 전체 텍스트 인덱스 변경 내용 추적은 테이블 변경 내용 추적 설정과 확실히 다릅니다. 전체 텍스트 인덱싱 변경 추적 및 전체 텍스트 인덱싱 자동 채우기가 작동하기 위해 테이블 ​​변경 추적을 활성화 할 필요는 없습니다.

데이터베이스에서 다음 쿼리를 실행하면 전체 텍스트 인덱서에서 마지막으로 크롤링을 실행 한 시간이 표시됩니다.

  SELECT  * FROM sys.fulltext_indexes

자동 채우기가 설정되어 있으면 테이블에 데이터를 삽입 한 후 crawl_end_date가 변경되어야합니다.

또한 전체 텍스트 인덱스를 사용하는 쿼리를 실행하면 최신 데이터가 표시됩니다.

  select TOP 10 * from YOURDATATABLE where contains((YOUR_indexed_column),'YOURSEARCHTERM') order by YOURPRIMARYKEYCOLUMN desc

추가 참조 :

전체 텍스트 검색 인구의 다른 방법을 설명하는 기사 : https://msdn.microsoft.com/en-us/library/ms142575%28v=sql.100%29.aspx

전체 텍스트 인덱스 테이블 쿼리에 대한 정보 : https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#queries

전체 텍스트 검색 아키텍처에 대한 기사 : https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#architecture

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.