2011-12-20 9 views
12

Mam dwie tabele, które mają miliony rekordów.
Chcę przeszukać cały tekst w kilku kolumnach (w zasadzie imię i nazwisko.) Jednak obie te tabele są w zasadzie wymazywane i zastępowane przez starszy pakiet DTS w weekend.
Miałem zestaw śledzenia zmian do automatycznego i kiedy powiedział DTS uruchomiony, tabela została zablokowana i wszystkie zapytania nie powiodło się.Porady dotyczące śledzenia zmian w indeksie pełnego serwera SQL i populacji

Chciałbym zrobić to we właściwy sposób. Jakie ustawienia lub harmonogramy należy stosować do śledzenia zmian FTS i populacji? Czy należy ustawić śledzenie zmian na wyłączone, a następnie zaplanować pełną populację po uruchomieniu importów DTS?

Czym różni się "śledzenie zmian" od "populacji" i jak są one powiązane?
Jak działa indeks, jeśli nie ma śledzenia zmian?
Czy pełna populacja dodaje indeksy, nawet jeśli śledzenie zmian jest wyłączone?

Odpowiedz

26

Istnieje kilka sposobów podejścia do populacji indeksów, gdy tabele zostaną usunięte w weekend. Jedną z opcji jest usunięcie indeksu pełnotekstowego z tabeli przed wyczyszczeniem go i ponowne utworzenie indeksu po starszej zmianie pakietu DTS. Inną opcją jest zmiana indeksu, aby ustawić CHANGE TRACKING na MANUAL. Po wyczyszczeniu tabeli i ponownym jej wypełnieniu populacja wskaźnika ft może zostać wywołana przez wywołanie ALTER FULLTEXT INDEX ... START UPDATE POPULATION. Wolę to drugie (nie zapomnij zresetować śledzenia zmian do AUTO, jeśli ta tabela widzi wiele aktualizacji).

Różnica między CHANGE_TRACKING i ludności -

CHANGE_TRACKING określa kiedy i czy zmiany wprowadzone w tabeli są propagowane do indeksu pełnotekstowego. Może być ustawiony na AUTO, MANUAL lub OFF.

POPULACJA ma znaczenie tylko wtedy, gdy CHANGE_TRACKING jest ustawione na RĘCZNE lub WYŁ.

Po ustawieniu na RĘCZNE, użytkownik musi wywołać polecenie aktualizacji populacji, aby pełny tekst mógł indeksować śledzone zmiany, tj. Nie były one automatycznie indeksowane.

Ustawienie WYŁ. Określa, że ​​SQL Server nie śledzi zmienionych danych, zamiast indeksowania tabeli tylko raz podczas wywoływania polecenia. Jeśli NIE podano LICZBY LUDNOŚCI przy ustawieniu CHANGE_TRACKING na WYŁ., Indeksy pełnotekstowe pozostaną niepopełnione, dopóki użytkownik nie wywoła ALTER PEŁNOTEKSTOWEGO INDEKSU z klauzulą ​​POPULARNEJ PEŁNEJ POPULACJI lub ROZPOCZĘCIE ROZPOWSZECHNIANIA LUDNOŚCI.

Artykuł MSDN CREATE FULLTEXT INDEX obejmuje wszystkie te opcje bardziej szczegółowo.

+0

Dobrze. Musiałeś iść i zmusić mnie do zalogowania się, aby dać ci +1. @fregas - upewnij się, że poszerzyłeś "aks" o jego dobrą odpowiedź. Ponadto, to zasługuje na najlepszą odpowiedź, jeśli nie ma innych. Znalazłem to całkiem przydatne. –

+0

+1 ode mnie. Lepsze niż artykuł MSDN ... – Shubhojit

Powiązane problemy