KB2887888 — POPRAWKA: Niska wydajność w SQL Server podczas tworzenia indeksu na typie danych przestrzennych dużej tabeli w wystąpieniu programu SQL Server 2012 lub SQL Server 2014

Dotyczy
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Objawy

Podczas próby utworzenia indeksu (przy użyciu instrukcji CREATE INDEX lub ALTER INDEX) typu danych przestrzennych dużej tabeli w programie Microsoft SQL Server 2012 lub SQL Server 2014 rywalizacja jest wysoka w typie oczekiwania CMEMTHREAD i wydajność programu SQL Server maleje.

Rozwiązanie

Ten problem został po raz pierwszy rozwiązany w następującej aktualizacji zbiorczej programu SQL Server.

Aktualizacja zbiorcza 1 dla systemu SQL Server 2014 /pl-pl/pomoc/2931693

Aktualizacja skumulowana 7 dla SQL Server 2012 z dodatkiem Service Pack 1 /en-us/help/2894115

Informacje o aktualizacjach zbiorczych dla programu SQL Server

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

      

Informacje o pakiecie aktualizacji poprawki Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem.

Jeśli poprawka jest dostępna do pobrania, u góry tego artykułu z bazy wiedzy znajduje się sekcja "Dostępne do pobrania poprawki". Jeśli ta sekcja nie zostanie wyświetlona, prześlij zgłoszenie do działu pomocy technicznej i pomocy technicznej firmy Microsoft w celu uzyskania poprawki.

Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=support Uwaga: Formularz "Dostępne do pobrania poprawki" zawiera języki, dla których poprawka jest dostępna. Jeśli nie widzisz odpowiedniego języka, oznacza to, że nie ma dla niego dostępnej poprawki.

Więcej informacji

Typ oczekiwania CMEMTHREAD wskazuje oczekiwanie na wewnętrznych, bezpiecznych wątkowo obiektach pamięci. Wyższe poziomy równoległości zapytań mogą wywoływać oczekiwanie, które prowadzi do zmniejszenia wydajności działania przestrzennego.

Ta poprawka partycjonuje element CMEMTHREAD skojarzony z obiektem "Spatial Memory Object" przy użyciu partycjonowania węzła NUMA. Zmniejsza to współbieżność działań procesu roboczego do liczby harmonogramów aktywnych w jednym węźle. W przypadku systemów z wyższymi poziomami harmonogramów na węzeł, flaga śledzenia –T8048 może być użyta do dalszego partycjonowania wszystkich obiektów pamięci, które umożliwiają partycjonowanie przez harmonogram. Flagi śledzenia należy używać ostrożnie, ponieważ wprowadza ona niewielkie obciążenie pamięci do wszystkich obiektów pamięci partycjonowanych przez węzeł NUMA.

Uwaga: Obiekt pamięci przestrzennej jest tworzony, gdy SqlServerSpatial110.dll jest ładowany do przestrzeni adresowej procesu SQL Server. W większości przypadków wymaga to ponownego uruchomienia procesu programu SQL Server w celu zastosowania efektów flagi śledzenia.

Typ oczekiwania CMEMTHREAD jest zwiększany dla dowolnego obiektu pamięci bezpiecznej wątkowo, a nie tylko dla obiektu przestrzennego. Poniższa definicja sesji XEvent i użycie symboli publicznych może służyć do identyfikacji określonego wiersza kodu, który generuje CMEMTHREAD waits:CREATE EVENT SESSION wait_stacks
NA SERWERZE
DODAWANIE sqlos.wait_info WYDARZENIA
(
      action(package0.callstack)
      where opcode = 1 -- wait completed
            i wait_type = 191 -- CMEMTHREAD
)
dodaj package0.asynchronous_bucketizer docelową (SET source_type = 1, source = 'package0.callstack'),
dodaj package0.ring_buffer docelową (SET max_memory = 4096)
Z (MAX_DISPATCH_LATENCY = 1 SEKUNDA)
Przejdź
Alter Event Session wait_stacks On Server State = Start
przejdź

Uruchamianie odtworzenia

select event_session_address, target_name, execution_count, cast (target_data as XML)
od sys.dm_xe_session_targets xst
      Sprzężenie wewnętrzne sys.dm_xe_sessions XS ON (xst.event_session_address = XS.ADDRESS)
gdzie xs.name = 'wait_stacks'
przejdź

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.