Zalecane aktualizacje i opcje konfiguracji dla SQL Server z obciążeniami o wysokiej wydajności

Ten artykuł zawiera listę ulepszeń wydajności i opcji konfiguracji dostępnych dla wersji SQL Server 2012 i nowszych.

Oryginalna wersja produktu: SQL Server 2014, SQL Server 2012
Oryginalny numer KB: 2964518

W tym artykule opisano ulepszenia wydajności i zmiany dostępne dla wersji SQL Server 2014 i SQL Server 2012 za pośrednictwem różnych aktualizacji produktów i opcji konfiguracji. Możesz rozważyć zastosowanie tych aktualizacji w celu zwiększenia wydajności wystąpienia SQL Server. Stopień poprawy zależy od różnych czynników, które obejmują wzorzec obciążenia, punkty rywalizacji, układ procesora (liczba grup procesorów, gniazda, węzły NUMA, rdzenie w węźle NUMA) i ilość pamięci obecnej w systemie. SQL Server zespół pomocy technicznej wykorzystał te aktualizacje i zmiany konfiguracji, aby osiągnąć rozsądny wzrost wydajności dla obciążeń klientów, którzy korzystali z systemów sprzętowych, które miały kilka węzłów NUMA i wiele procesorów. Zespół pomocy technicznej będzie nadal aktualizować ten artykuł o inne aktualizacje w przyszłości.

Systemy wysokiej klasy System wysokiej klasy zwykle ma wiele gniazd, osiem rdzeni lub więcej na gniazdo i pół terabajta lub więcej pamięci.

Uwaga

W SQL Server 2016 r. i nowszych wersjach wiele flag śledzenia wymienionych w tym artykule jest zachowaniem domyślnym i nie trzeba ich włączać w tych wersjach.

Zalecenia są pogrupowane w trzy tabele w następujący sposób:

  • Tabela 1 zawiera najczęściej zalecane aktualizacje i flagi śledzenia dla skalowalności w systemach wysokiej klasy.
  • Tabela 2 zawiera zalecenia i wskazówki dotyczące dodatkowego dostrajania wydajności.
  • Tabela 3 zawiera dodatkowe poprawki skalowalności, które zostały dołączone wraz z aktualizacją zbiorczą.

Tabela 1. Ważne aktualizacje i flagi śledzenia dla systemów wysokiej klasy

Przejrzyj poniższą tabelę i włącz flagi śledzenia w kolumnie Flaga śledzenia po upewnieniu się, że wystąpienie SQL Server spełnia wymagania w kolumnie Odpowiednie zakresy wersji i kompilacji.

Uwaga

  • Odpowiednia wersja i kompilacja wskazują konkretną aktualizację, w której wprowadzono flagę zmiany lub śledzenia. Jeśli nie określono cu, wszystkie cu w sp są dołączone.

  • Nie dotyczy wersji i kompilacji wskazuje określoną aktualizację, w której zmiana lub śledzenia flaga stała się zachowaniem domyślnym. Dlatego samo zastosowanie tej aktualizacji wystarczy, aby uzyskać korzyści.

Ważna

Po włączeniu poprawek z flagami śledzenia w środowiskach zawsze włączonych należy włączyć flagi poprawek i śledzenia na wszystkich replikach należących do grupy dostępności.

Scenariusz i objaw do rozważenia Flaga śledzenia Odpowiednie zakresy wersji i kompilacji Nie dotyczy wersji i zakresów kompilacji Link do artykułu/bloga w bazie wiedzy, który zawiera więcej szczegółów
  • Występują wysokie oczekiwania CMEMTHREAD.
  • SQL Server jest instalowany w systemach z co najmniej 8 rdzeniami na gniazdo.
T8048
  • SQL Server 2012 RTM do bieżącego dodatku Service Pack (SP)/CU
  • SQL Server 2014 RTM do SP1
  • SQL Server 2014 z dodatkiem SP2 do bieżącej wersji SP/CU
  • SQL Server 2016 RTM do bieżącej wersji SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
  • Występują wysokie oczekiwania CMEMTHREAD.
  • SQL Server jest instalowany w systemach z co najmniej 8 rdzeniami na gniazdo.
T8079 SQL Server 2014 z dodatkiem SP2 do bieżącej wersji SP/CU
  • SQL Server 2016 RTM do bieżącej wersji SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
  • Używasz funkcji, które opierają się na pamięci podręcznej puli dzienników. (na przykład Zawsze włączone)
  • SQL Server jest zainstalowany w systemach z wieloma gniazdami.
T9024 Pakiet aktualizacji zbiorczej 3 dla SQL Server 2012 z dodatkiem Service Pack 1 do SP2 SQL Server 2014 RTM
  • SQL Server 2012 SP3 do bieżącego sp/CUSQL
  • Server 2014 SP1 to current SP/CU
  • SQL Server 2016 RTM do bieżącej wersji SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
POPRAWKA: Wysoka wartość licznika "oczekiwanie na zapis dziennika" w wystąpieniu SQL Server 2012 lub SQL Server 2014 r.
Twoje wystąpienie SQL Server obsługuje tysiące resetów połączeń z powodu buforowania połączeń. T1236 Zbiorczy pakiet aktualizacji 9 dla SQL Server 2012 z dodatkiem Service Pack 1 do SP2 — aktualizacja zbiorcza 1 dla SQL Server 2014 r.
  • SQL Server 2012 SP3 do bieżącego sp/CUSQL
  • Server 2014 SP1 to current SP/CUSQL
  • Server 2016 RTM to current SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
  • Obciążenie aplikacji obejmuje częste użycie bazy danych tempdb (tworzenie i upuszczanie tabel tymczasowych lub zmiennych tabel).
  • Zauważysz, że żądania użytkowników oczekujące na zasoby strony bazy danych tempdb z powodu rywalizacji o alokację.
T1118
  • SQL Server 2012 RTM to current SP/CU
  • SQL Server 2014 RTM to current SP/CU
  • SQL Server 2016 RTM do bieżącej wersji SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
Ulepszenia współbieżności bazy danych tempdb

UWAGA Włącz flagę śledzenia i dodaj wiele plików danych dla bazy danych tempdb.
  • Masz wiele plików danych bazy danych tempdb.
  • Pliki danych na początku są ustawione na ten sam rozmiar.
  • Z powodu dużej aktywności pliki tempdb napotykają wzrost i nie wszystkie pliki rosną w tym samym czasie i powodują rywalizację o alokację.
T1117
  • SQL Server 2012 RTM to current SP/CU
  • SQL Server 2014 RTM to current SP/CU
  • SQL Server 2016 RTM do bieżącej wersji SP/CU
  • SQL Server 2017 RTM do bieżącej wersji SP/CU
Zalecenia dotyczące zmniejszenia rywalizacji o alokację w bazie danych SQL Server tempdb
Duża SOS_CACHESTORE rywalizacja o spinlock lub plany są często eksmitowane w obciążeniach zapytań ad hoc. T174 Brak
  • Wpisy w pamięci podręcznej planu są eksmitowane z powodu wzrostu liczby innych pamięci podręcznych lub urzędników pamięci
  • Wysokie użycie procesora CPU z powodu częstych ponownych kompilacji zapytań
T8032
  • SQL Server 2012 RTM to current SP/CU
  • SQL Server 2014 RTM to current SP/CU
Brak
Istniejące statystyki nie są często aktualizowane ze względu na dużą liczbę wierszy w tabeli. T2371
  • SQL Server 2012 RTM to current SP/CU
  • SQL Server 2014 RTM to current SP/CU
Brak
  • Wykonywanie zadań statystyki zajmuje dużo czasu.
  • Nie można wykonać wielu zadań aktualizacji statystyk równolegle.
T7471 SQL Server 2014 SP1 CU6 to current SP/CU Brak Zwiększanie wydajności statystyk aktualizacji za pomocą programu SQL 2014 & SQL 2016
Polecenie CHECKDB zajmuje dużo czasu dla dużych baz danych.
  • T2562
  • T2549
    • SQL Server 2012 RTM to current SP/CU
    • SQL Server 2014 RTM to current SP/CU
    Brak
    Polecenie CHECKDB zajmuje dużo czasu dla dużych baz danych. T2566
    • SQL Server 2012 RTM to current SP/CU
    • SQL Server 2014 RTM to current SP/CU
    Brak
    Wykonywanie współbieżnych zapytań magazynu danych, które zajmują dużo czasu kompilacji, powoduje RESOURCE_SEMAPHORE_QUERY_COMPILE oczekiwanie. T6498 Pakiet aktualizacji zbiorczej 6 dla SQL Server 2014 do SP1
    • SQL Server 2014 SP2 do bieżącego sp/CUSQL
    • Server 2016 RTM to current SP/CU
    • SQL Server 2017 RTM do bieżącej wersji SP/CU
    Rozwiązujesz problemy z wydajnością określonych zapytań Poprawki optymalizatora są domyślnie wyłączone. T4199
    • SQL Server 2012 RTM do SP4
    • SQL Server 2014 RTM to latest
    Brak
    Niska wydajność przy użyciu operacji zapytań z typami danych przestrzennych.
    • T6532
    • T6533
    • T6534
    • SQL Server 2012 z dodatkiem SP3 do bieżącej wersji SP/CU
    • SQL Server 2014 z dodatkiem SP2 do bieżącej wersji SP/CU
      • SQL Server 2016 RTM do bieżącej wersji SP/CU
      • SQL Server 2017 RTM do bieżącej wersji SP/CU
        • Zapytania napotykają SOS_MEMORY_TOPLEVELBLOCKALLOCATOR i cmemthread czeka.
        • W procesie SQL Server jest mało dostępnej wirtualnej przestrzeni adresowej.
        T8075
        • SQL Server 2012 SP2 CU8 to current SP/CU
        • SQL Server 2014 RTM CU10 to current SP/CU
        • SQL Server 2016 RTM do bieżącej wersji SP/CU
        • SQL Server 2017 RTM do bieżącej wersji SP/CU
        POPRAWKA: Błąd braku pamięci, gdy wirtualna przestrzeń adresowa procesu SQL Server jest niska w SQL Server
        • SQL Server jest zainstalowany na maszynie z dużą ilością pamięci.
        • Tworzenie nowych baz danych zajmuje dużo czasu.
        T3449
        • SQL Server 2012 SP3 CU3 to current SP/CU
        • SQL Server 2014 RTM CU14 to current RTM CU
        • SQL Server 2014 SP1 CU7 to current SP/CU
        • SQL Server 2016 RTM do bieżącej wersji SP/CU
        • SQL Server 2017 RTM do bieżącej wersji SP/CU
        POPRAWKA: SQL Server tworzenie bazy danych w systemie z dużą ilością pamięci trwa dłużej niż oczekiwano

        Tabela 2. Ogólne zagadnienia i najlepsze rozwiązania dotyczące poprawy wydajności wystąpienia SQL Server

        Przejrzyj zawartość artykułu bazy wiedzy/kolumny Zasoby online książek i rozważ zaimplementowanie wskazówek w kolumnie Zalecane akcje.

        Zasób usługi Knowledge Base /Books Online Zalecane akcje
        Konfigurowanie maksymalnego stopnia opcji konfiguracji serwera równoległości Użyj procedury składowanej sp_configure, aby wprowadzić zmiany konfiguracji, aby skonfigurować maksymalny stopień opcji konfiguracji serwera równoległości dla wystąpienia SQL Server zgodnie z artykułem Bazy wiedzy.
        Limity pojemności obliczeniowej według wersji SQL Server Enterprise Edition z licencją serwera i licencji dostępu klienta (CAL) jest ograniczona do 20 rdzeni na wystąpienie SQL Server. W modelu licencjonowania serwera opartego na rdzeniach nie ma żadnych limitów. Rozważ uaktualnienie wersji SQL Server do odpowiedniej jednostki SKU w celu wykorzystania wszystkich zasobów sprzętowych.
        Niska wydajność w systemie Windows Server w przypadku korzystania z "zrównoważonego" planu zasilania Zapoznaj się z artykułem i skontaktuj się z administratorem systemu Windows, aby zaimplementować jedno z rozwiązań zanotowane w sekcji "Rozwiązanie" artykułu.
        Ręcznie przypisz węzły NUMA do grup K.
        Optymalizacja pod kątem obciążeń ad hocFORCED PARAMETERIZATION Wpisy w pamięci podręcznej planu są eksmitowane z powodu wzrostu liczby innych pamięci podręcznych lub urzędników pamięci. Może również wystąpić eksmisja pamięci podręcznej planu, gdy pamięć podręczna osiągnie maksymalną liczbę wpisów. Oprócz flagi śledzenia 8032 omówionych powyżej rozważ opcję optymalizacji dla serwera obciążeń ad hoc , a także opcję bazy danych FORCED PARAMETERIZATION .
        Jak zmniejszyć stronicowanie pamięci puli buforów w konfiguracji SQL ServerMemory i zagadnienia dotyczące ustalania rozmiaru w wersjach SQL Server 2012 i nowszych Przypisz prawo użytkownika Włącz strony blokady w opcji pamięci (Windows) do konta uruchamiania usługi SQL. Zobacz Jak włączyć funkcję "zablokowanych stron" w SQL Server 2012 roku. Ustaw maksymalną ilość pamięci serwera na około 90 procent całkowitej pamięci fizycznej. Upewnij się, że ustawienie opcji konfiguracji pamięci serwera konta pamięci tylko z węzłów, które są skonfigurowane do korzystania z ustawień maski koligacji.
        SQL Server i duże strony — objaśnienie...Opcje dostrajania dla SQL Server podczas uruchamiania w obciążeniach o wysokiej wydajności Rozważ włączenie serwera TF 834, jeśli masz serwer z dużą ilością pamięci, szczególnie w przypadku obciążenia analitycznego lub magazynowania danych. Pamiętaj, że program TF 834 nie jest zalecany, jeśli używasz indeksów magazynu kolumn.
        Opis opcji "Liczba zasobników pamięci podręcznej sprawdzania dostępu" i "sprawdzanie dostępu do pamięci podręcznej" dostępne w procedurze składowanej sp_configure Użyj opcji konfiguracji serwera pamięci podręcznej sprawdzania dostępu , aby skonfigurować te wartości zgodnie z zaleceniami w artykule Bazy wiedzy. Zalecane wartości dla systemów wysokiej klasy są następujące:
        "Liczba zasobników pamięci podręcznej sprawdzania dostępu": 256
        "Limit przydziału pamięci podręcznej sprawdzania dostępu": 1024

        Alter WORKLOAD GROUPMemory grant query hints (Wskazówki dotyczące udzielania zapytań przez grupę obciążeń ALTER) Jeśli masz wiele zapytań, które wyczerpują duże dotacje na pamięć, zmniejsz request_max_memory_grant_percent domyślną grupę obciążeń w konfiguracji zarządcy zasobów z domyślnej wartości 25% do niższej. Dostępne są nowe opcje udzielania pamięci zapytań (min_grant_percent i max_grant_percent) w SQL Server
        Błyskawiczne inicjowanie pliku Skontaktuj się z administratorem systemu Windows, aby udzielić kontu usługi SQL Server prawa użytkownika "Wykonywanie zadań konserwacji woluminów" zgodnie z informacjami w temacie Książki online.
        Zagadnienia dotyczące ustawień "autogrow" i "autoshrink" w SQL Server Sprawdź bieżące ustawienia bazy danych i upewnij się, że zostały skonfigurowane zgodnie z zaleceniami w artykule Bazy wiedzy.
        Punkty kontrolne bazy danych (SQL Server) Rozważ włączenie pośrednich punktów kontrolnych w bazach danych użytkowników w celu zoptymalizowania zachowania operacji we/wy w SQL Server 2012 i 2014 roku.
        POPRAWKA: Powolna synchronizacja, gdy dyski mają różne rozmiary sektorów dla plików dziennika repliki podstawowej i pomocniczej w środowiskach grupy dostępności SQL Server i logshipping Jeśli masz grupę dostępności, w której dziennik transakcji w replice podstawowej znajduje się na dysku o rozmiarze sektora 512 bajtów, a dziennik transakcji repliki pomocniczej znajduje się na dysku o rozmiarze sektora 4K, może wystąpić problem polegający na powolnym synchronizowaniu. W takich przypadkach włączenie serwera TF 1800 powinno rozwiązać problem. Aby uzyskać więcej informacji, zobacz Trace Flag 1800.For more information, see Trace Flag 1800 (Flaga śledzenia 1800).
        Jeśli SQL Server nie jest jeszcze powiązana z procesorem CPU, a obciążenie od 1,5% do 2% jest znikome dla obciążeń, zalecamy włączenie serwera TF 7412 jako flagi śledzenia uruchamiania. Ta flaga umożliwia uproszczone profilowanie w SQL Server 2014 z dodatkiem SP2 lub nowszym, co umożliwi rozwiązywanie problemów z zapytaniami na żywo w środowiskach produkcyjnych.

        Tabela 3. Poprawki wydajności uwzględnione w aktualizacji zbiorczej

        Przejrzyj opis w kolumnie Objawy i zastosuj wymagane aktualizacje w kolumnie Wymagana aktualizacja w odpowiednich środowiskach. Aby uzyskać więcej informacji na temat odpowiednich problemów, możesz zapoznać się z artykułem bazy wiedzy. Te zalecenia nie wymagają włączenia dodatkowych flag śledzenia jako parametrów uruchamiania. Wystarczy zastosować najnowszą aktualizację zbiorczą lub dodatek Service Pack zawierający te poprawki, aby uzyskać korzyść.

        Uwaga

        Nazwa CU w kolumnie Wymagana aktualizacja zawiera pierwszą zbiorczą aktualizację SQL Server, która rozwiązuje ten problem. Aktualizacja zbiorcza zawiera wszystkie poprawki i wszystkie aktualizacje dołączone do poprzedniej wersji SQL Server aktualizacji. W związku z tym zalecamy zainstalowanie najnowszej aktualizacji zbiorczej w celu rozwiązania problemów.

        Symptomy Wymagana aktualizacja Artykuł z bazy wiedzy
        Chętni zapisy podczas wybierania do tabel tymczasowych powodują problemy z wydajnością. SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        POPRAWKA: Niska wydajność operacji we/wy podczas wykonywania operacji wybierania w tymczasowej operacji tabeli w SQL Server 2012 r.
        PWAIT_MD_RELATION_CACHE Napotkasz operację ALTER INDEX ... ONLINE zapytania lub MD_LAZYCACHE_RWLOCK czekasz na nie po jej przerwaniu. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        POPRAWKA: Wydajność spada po zmianie indeksu... Operacja ONLINE została przerwana w SQL Server 2012 r. lub SQL Server 2014 r.
        Zapytania nagle działają słabo w standardowej wersji produktu. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        POPRAWKA: Wątki nie są zaplanowane równomiernie w wersji SQL Server 2012 lub SQL Server 2014 Standard Edition
        Niska wydajność z powodu nagłego spadku oczekiwanej długości życia strony. SQL Server 2012 SP1 CU4 POPRAWKA: W SQL Server 2012 r. mogą wystąpić problemy z wydajnością
        Wysokie użycie procesora CPU przez monitor zasobów w systemach z konfiguracją NUMA, dużą pamięcią i "maksymalną ilością pamięci serwera" ustawioną na niską wartość. SQL Server 2012 SP1 CU3 POPRAWKA: Skok procesora CPU, gdy nie ma obciążenia na serwerze po zainstalowaniu SQL Server 2012 na serwerze
        Harmonogram bez wydajności, podczas gdy pamięć alokacji dla sortowania uruchamia skojarzone duże przydziały pamięci w systemach z dużą ilością zainstalowanej pamięci. SQL Server 2012 SP1 CU2 POPRAWKA: Błąd 17883 podczas uruchamiania zapytania na serwerze z wieloma procesorami CPU i dużą ilością pamięci w SQL Server 2012 r. lub w SQL Server 2008 R2
        Harmonogram bez wydajności, gdy operator sortowania przechodzi przez wiele zasobników w puli buforów w systemach z dużą ilością pamięci. SQL Server 2012 SP1 CU1 POPRAWKA: Komunikat o błędzie "Proces wydaje się nie zwracać wydajności w harmonogramie" podczas uruchamiania zapytania w SQL Server 2012 r.
        Wysokie użycie procesora CPU podczas uruchamiania współbieżnych zapytań, które zajmują dużo czasu, aby skompilować w systemach z wieloma węzłami NUMA i wieloma rdzeniami. SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        POPRAWKA: Intensywne obciążenie kompilacji zapytań nie jest skalowane przy rosnącej liczbie rdzeni na sprzęcie NUMA i powoduje nasycenie procesora CPU w SQL Server
        Alokacje pamięci dla operatorów sortowania zajmują dużo czasu w systemach NUMA z dużą ilością pamięci z powodu alokacji węzłów zdalnych. SQL Server 2012 SP1 CU3 POPRAWKA: SQL Server problemy z wydajnością w środowiskach NUMA
        Błędy braku pamięci, gdy SQL Server jest zainstalowany na maszynie NUMA z dużą ilością pamięci RAM, a SQL Server ma wiele stron obcych. SQL Server 2012 RTM CU1 POPRAWKA: Błąd braku pamięci podczas uruchamiania wystąpienia SQL Server 2012 r. na komputerze korzystającym z interfejsu NUMA
        Rywalizacja o spinlock na platformie SOS_CACHESTORE i SOS_SELIST_SIZED_SLOCK podczas tworzenia indeksu na typie danych przestrzennych w dużej tabeli. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        POPRAWKA: Niska wydajność w SQL Server 2012 r. lub SQL Server 2014 r. podczas tworzenia indeksu na typie danych przestrzennych dużej tabeli
        Wysoki typ oczekiwania CMEMTHREAD podczas tworzenia indeksu na typie danych przestrzennych w dużych tabelach. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        POPRAWKA: Niska wydajność w SQL Server podczas tworzenia indeksu na typie danych przestrzennych dużej tabeli w wystąpieniu SQL Server 2012 lub SQL Server 2014 r.
        Problemy z wydajnością z SOS_PHYS_PAGE_CACHE powodu i CMEMTHREAD czeka podczas alokacji pamięci na komputerach z dużą pamięcią. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        POPRAWKA: Problemy z wydajnością występują w środowiskach NUMA podczas przetwarzania stron obcych w SQL Server 2012 r. lub SQL Server 2014 r.
        Polecenie CHECKDB zajmuje dużo czasu dla dużych baz danych. Pakiet aktualizacji zbiorczej 6 dla SQL Server 2014 r. POPRAWKA: Polecenie DBCC CHECKDB/CHECKTABLE może trwać dłużej w SQL Server 2012 r. lub SQL Server 2014 r.

        Ważne uwagi

        Informacje

        Informacje zawarte w tym artykule dotyczą

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • deweloper SQL Server 2014
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server 2012 Business Intelligence
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core