Udostępnij za pośrednictwem


Dostosowywanie wydajności i optymalizacja indeksy Full-Text

Wydajność indeksowania pełnotekstowego i kwerendy pełnego tekstu jest wpływ zasobów sprzętowych, takich jak pamięć, szybkość dysku, szybkość PROCESORA i architektura komputera.Główne przyczyny obniżoną wydajność indeksowania pełnotekstowego jest ograniczeń zasób sprzętowych:

  • Jeśli użycie PROCESORA przez demona filtru hosta procesu (fdhost.exe) lub SQL Server proces (sqlservr.exe) jest zbliżona do 100 procent, wąskie gardło PROCESORA.

  • Jeśli średnia długość kolejki dysku oczekiwania jest więcej niż dwa razy liczba głowic dysku, ma wąskie gardło na dysku.Podstawowym obejściem jest do tworzenia katalogów pełnego tekstu, które są niezależne od SQL Server pliki bazy danych i dzienników. Na oddzielnych dyskach należy umieścić pliki dzienników, pliki bazy danych i katalogów pełnego tekstu.Kupowanie dysków szybciej i przy użyciu macierzy RAID może również zwiększyć wydajność indeksowania.

  • W przypadku niedoboru pamięci fizycznej (limit 3 GB) pamięci może być wąskie gardło.Możliwe we wszystkich systemach są ograniczenia ilości pamięci fizycznej i w systemach 32-bitowe ciśnienia pamięci wirtualnej może spowolnić pełnotekstowy.

    Uwaga

    Począwszy od SQL Server 2008, ze względu na to, aparat pełny tekst jest częścią sqlservr.exe aparat pełnego tekstu można używać AWE pamięci.

Jeśli system ma wąskie gardła nie sprzętu, wydajność indeksowania pełnotekstowego wyszukiwania przeważnie zależy od następujących:

  • Jak długo trwa SQL Server Aby utworzyć wiele instancji pełnego tekstu.

  • Jak szybko demon filtru może wykorzystać te instancje.

Uwaga

W przeciwieństwie do pełnego zapełnianie charakter przyrostowy, ręczne i automatyczne zmian zapełnianie nie są przeznaczone do maksymalizacji zasobów sprzętowych w celu osiągnięcia większej szybkości.Dlatego te sugestie strojenia nie może poprawić wydajność indeksowania pełnotekstowego.

Po zakończeniu zapełnianie, proces scalania końcowego zostanie wywołany, które scala fragmenty indeksu razem w jednym głównym indeks pełnotekstowy.W efekcie kwerendy lepszą wydajność, ponieważ tylko indeks główny musi być kierowane kwerendy, a nie liczba fragmentów indeksu i lepiej Punktacja statystyki mogą być używane do klasyfikacji istotności.Należy zauważyć, że Scalanie główne mogą być obciążenie We/Wy, ponieważ duże ilości danych musi być zapisany i przeczytać w przypadku scalania fragmenty indeksu, chociaż nie blokuje przychodzące kwerendy.

Important noteImportant Note:

Wzorzec scalanie dużą ilość danych, można utworzyć długo działających transakcji, opóźnienia obcinania dziennik transakcji w punkcie kontrolnym.W takim wypadku w pełni model odzyskiwanie, dziennika transakcji może się znacząco rozrosnąć.Zgodnie z zaleceniami dotyczącymi przed reorganizacji duży indeks pełnotekstowy w bazie danych, która wykorzystuje model pełnego odzyskiwanie upewnij się, że dziennik transakcji zawiera wystarczająco dużo miejsca dla transakcji długim.Aby uzyskać więcej informacji zobaczManaging the Size of the Transaction Log File.

Dostrajanie wydajności indeksy Full-Text

Aby zmaksymalizować wydajność sieci indeksy pełnotekstowe, zaimplementować następujące wskazówki:

  • Aby używać wszystkich procesorów lub rdzeni do maksymalnej, ustawianie sp_configure ‘max full-text crawl ranges’ do liczby procesorów w systemie. Aby uzyskać informacje dotyczące tej opcji konfiguracja zobacz max full-text crawl range Option.

  • Upewnij się, że podstawowa tabela ma indeks klastrowany.Użyj danych typu Liczba całkowita dla pierwszej kolumna indeks klastrowany.Należy unikać identyfikatorów GUID w pierwszej kolumnie indeks klastrowany.Multi-zakres zapełnianie w indeksie klastrowanym wygenerowane na najwyższą szybkość zapełnianie.Firma Microsoft zaleca, kolumna służącej jako klucz pełnego tekstu danych typu Liczba całkowita.

  • Aktualizowanie statystyk w tabela bazowa za pomocą AKTUALIZACJA STATYSTYK instrukcja.Co ważniejsze, Aktualizuj statystykę w indeks klastrowany lub klucz pełnego tekstu dla pełnej zapełnianie.Dzięki temu multi-zakres zapełnianie do generowania dobrej partycji na tabela.

  • Budowanie indeksu pomocniczych na timestamp kolumna, aby zwiększyć wydajność przyrostowe zapełnianie.

  • Przed wykonaniem pełnego zapełnianie na komputerze, na dużych wielu procesorów, zalecane jest tymczasowo ograniczyć rozmiar pula buforów ustawiając max server memory wartości, aby pozostawić za mało pamięci do wykorzystania fdhost.exe proces i system operacyjny. Aby uzyskać więcej informacji, zobacz sekcję „ Wymagania pamięci procesu hosta demon filtru (fdhost.exe), Szacowanie"w dalszej części tego tematu.

Rozwiązywanie problemów z pełnego problemy wydajności zapełnianie.

Do diagnozowania problemów z wydajnością, sprawdź dzienniki przeszukiwanie pełnego tekstu.Aby uzyskać informacje dotyczące przeszukiwanie dzienników Zobacz Troubleshooting Errors in a Full-Text Population (Crawl)).

Zaleca się, że następującej kolejności rozwiązywania problemów należy stosować, jeżeli wydajności pełny populacji nie jest zadowalający.

Użycie pamięci fizycznej

Podczas pełnego tekstu zapełnianie istnieje możliwość fdhost.exe lub sqlservr.exe uruchomić niskie wolnej pamięci lub uruchomienia pamięci.Jeśli przeszukiwanie pełnego tekstu dziennika wskazuje, że fdhost.exe jest uruchamiany często ponownie, lub że kod błędu 8007008 jest zwracanych oznacza to jedną z tych procesów jest uruchomiony w pamięci.Jeśli fdhost.exe są zakładane zrzuty, szczególnie w dużych, wiele procesorów komputerów, to może być uruchomiony z pamięci.

Uwaga

Aby uzyskać informacje dotyczące bufory pamięci używane przez przeszukiwanie pełnego tekstu, zobacz sys.dm_fts_memory_buffers (Transact-SQL).

Możliwe przyczyny to:

  • Jeśli ilość pamięci fizycznej, która jest dostępna podczas pełnego zapełnianie wynosi zero, SQL Server pula buforów może zajmująca większość fizycznej pamięci w systemie.

    Proces sqlservr.exe próbuje chwyć całej pamięci dostępnej dla pula buforów do skonfigurowanego serwera maksymalną ilość pamięci.Jeśli Maksymalna pamięć alokacja jest zbyt duży, limitu pamięci warunków i nie można przydzielić pamięci współużytkowanej może wystąpić w procesie fdhost.exe.

    Uwaga

    Podczas zapełnianie pełnego tekstu na komputerze wielu procesorów, takim jak komputer IA64 64-kierunkowe pomiędzy fdhost.exe lub sqlservr.exe mogą występować rywalizacji o pamięci pula buforów.Brak wynikowy ponownych prób partia powoduje, że pamięci współużytkowanej pamięci thrashing i zrzuty procesu fdhost.exe.

    Ten problem można rozwiązać, ustawiając Maksymalna pamięć wartość SQL Server odpowiednio buforu puli. Aby uzyskać więcej informacji, zobacz sekcję „ Wymagania pamięci procesu hosta demon filtru (fdhost.exe), Szacowanie"w dalszej części tego tematu.Zmniejszanie rozmiaru wsadu, używane do indeksowania pełnotekstowego może pomóc.

  • Problem stronicowania

    Rozmiar pliku strona za mało takie, jak w systemie, który ma mały plik strona o ograniczonym dostępie wzrostu, przyczyną może być również fdhost.exe lub sqlservr.exe uruchomienie z pamięci.

    Jeśli dzienniki przeszukiwanie nie wykazują żadnych błędów związanych z pamięcią, jest prawdopodobne, że wydajność jest niska, ze względu na nadmiernego stronicowania.

Szacowanie wymagań pamięci procesu hosta demon filtru (fdhost.exe)

Ilość pamięci wymaganej przez proces fdhost.exe dla zapełnianie zależy głównie od liczby zakresów przeszukiwanie pełnego tekstu zastosowano, rozmiar pamięci współdzielonej przychodzących (ISM) i maksymalną liczbę wystąpień ISM.

Może być mniej więcej fizycznemu oszacowana ilość pamięci (w bajtach) przez hosta demon filtru przy użyciu następującej formuły:

number_of_crawl_ranges * ism_size * max_outstanding_isms * 2

Domyślne wartości zmiennych w poprzednim formuły są następujące:

Variable

Wartość domyślna

number_of_crawl_ranges

Liczba procesorów

ism_size

1 MB dla x 86 komputerom

4 MB, 8 MB lub 16 MB dla komputerów 64, w zależności od tego, całkowita pamięć fizyczna x

max_outstanding_isms

25 na x 86 komputerom

5 na komputerach z 64 x

W poniższej tabela przedstawiono wskazówki dotyczące oszacować wymagania pamięci fdhost.exe.Formuły w tej tabela należy użyć następujących wartości:

  • F, który jest oszacowanie wymagane przez fdhost.exe (w MB) pamięci.

  • T, który jest całkowita pamięć fizyczna dostępna w systemie (w MB).

  • M, który jest optymalnej Maksymalna pamięć ustawienie.

Important noteImportant Note:

Aby uzyskać istotne informacje dotyczące formuły zobacz 1, 2, and 3, poniżej.

Precyzyjne lub całkowita liczba cyfr.

Szacowanie wymagań pamięci fdhost.exe MB —F1

Formuła do obliczania Maksymalna pamięć —M2

dla komputerów z procesorami x 86 z AWE wyłączone

F=Number of crawl ranges* 50

M=minimum(T, 2000)–F 500

dla komputerów z procesorami x 86 z AWE włączone

F=Number of crawl ranges* 50

M=TF 500

x 64 lub IA643

F=Number of crawl ranges* 10 * 8

M=TF 500

1 W przypadku wielu pełnego populacji w trakcie obliczania zapotrzebowania pamięci fdhost.exe każdej oddzielnie F1, F2, itd. Then calculate M as T**–** sigma**(Fi)**.

2 500 MB jest szacowana ilość pamięci wymaganej przez inne procesy w systemie.Jeśli system robi dodatkowej pracy, należy odpowiednio zwiększyć tę wartość.

3 .ism_size zakłada się, że wynosi 8 MB dla x 64 platformach.

Przykład: Szacowanie wymagań pamięci fdhost.exe

W tym przykładzie jest na komputerze AMD64, na którym 8 GM ilość pamięci RAM i procesory dwurdzeniowy 4.Pierwsze obliczenie szacunków pamięci wymagane przez fdhost.exe—F. Liczba zakresów przeszukiwanie 8.

F = 8*10*8=640

The next calculation obtains the optimal value for max server memory—M.The total physical memory available on this system in MB—T—is 8192.

M = 8192-640-500=7052

Przykład: Ustawienie Maksymalna liczba serwerów pamięci

This example uses the sp_configure and RECONFIGURETransact-SQL statements to set max server memory to the value calculated for M in the preceding example, 7052:

USE master;
GO
EXEC sp_configure 'max server memory', 7052;
GO
RECONFIGURE;
GO

Aby ustawić maksymalny serwer opcja konfiguracja pamięci

Czynniki, które można zmniejszyć zużycie PROCESORA

Oczekujemy, że wydajność pełnego populacji nie przebiega optymalnie, gdy średnie zużycie PROCESORA jest niższa niż około 30 procent.W tej części opisano czynniki wpływające na zużycie PROCESORA.

  • Wysoka oczekiwania na stronach

    Aby dowiedzieć się, czy czas oczekiwania do strona jest wysoka, wykonaj następujące czynności Transact-SQL instrukcja:

    Execute SELECT TOP 10 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC;
    

    W poniższej tabela opisano typy oczekiwania odsetek w tym miejscu.

    Odczekaj typu

    Description

    Możliwe rozwiązania

    PAGEIO_LATCH_SH (_EX lub _UP)

    Może to oznaczać wąskie gardło operacji We/Wy, przez co będzie zazwyczaj widoczny również długość wysoka Średnia dysku kolejki.

    Przesunięcie inną grupa plików indeksu całego tekstu na innym dysku może zmniejszyć wąskie gardło operacji We/Wy.

    PAGELATCH_EX (lub _UP)

    Może to oznaczać dużą ilość rywalizacji między wątków, które próbujesz zapisać do tego samego plik bazy danych.

    Dodawanie plików do grupa plików, na którym znajduje się indeks więcej zwiększa złagodzić takich niezgodności.

    Aby uzyskać więcej informacji zobacz sys.dm_os_wait_stats (języka Transact-SQL).

  • Nieefektywność skanowanie tabela bazowa

    zapełnianie pełne skanowanie tabela bazowa do wyprodukowania instancje.Skanowanie tabela, może być mało wydajna w następujących scenariuszach:

    • Jeśli w tabela bazowa jest wysoka wartość procentowa kolumn poza wiersze, które są pełnego tekstu indeksowanych, skanowanie tabela bazowa do wyprodukowania partii może być wąskie gardło.W takim przypadek przenoszenie mniejszych danych w wierszu metodą varchar(max) lub nvarchar(max) być może pomóc.

    • Jeśli w tabela bazowa jest bardzo pofragmentowany, skanowanie może być mało wydajna.Aby uzyskać informacje na temat obliczania danych wychodzących z wierszy i indeks fragmentacji zobacz sys.dm_db_partition_stats (Transact-SQL) i sys.dm_db_index_physical_stats (Transact-SQL).

      Aby zmniejszyć fragmentacji, reorganizować lub odbudować indeks klastrowany.Aby uzyskać więcej informacji zobaczReorganizing and Rebuilding Indexes.

Historia zmian

Microsoft Learning

Dodaje ważną notatkę z zaleceniami dotyczącymi przygotowania do scalania głównego na dużej ilości danych indeksowane w ramach model pełnego odzyskiwanie opis.

Dodane z zaleceniami dotyczącymi przygotowania do scalania głównego na komputerze, duże multi-CPU, w sekcji "" Dostosowywanie wydajności z Full-Text indeksy".

Sekcja sklarowanego i rozwinięty "fizycznej pamięci użycia".