KB2887888 – КОРЕКЦИЯ: Забавена работа в SQL Server, когато създавате индекс върху тип пространствени данни на голяма таблица в екземпляр на SQL Server 2012 или SQL Server 2014

Отнася се за
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)

Симптоми

Когато се опитате да съставите индекс (с помощта на CREATE INDEX или ALTER INDEX) върху тип пространствени данни на голяма таблица в Microsoft SQL Server 2012 или SQL Server 2014, конкуренцията е много за типа изчакване CMEMTHREAD и производителността на SQL Server намалява.

Решение

Проблемът е коригиран за първи път в следващата кумулативна актуализация на SQL Server.

Сборна актуализация 1 за SQL Server 2014 г. /bg-bg/help/2931693

Сборна актуализация 7 за SQL Server 2012 SP1 /en-us/help/2894115

За кумулативните актуализации за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

      

Информация за пакета за актуализация на гореща поправка Поддържа се гореща поправка предлага се от Microsoft. Тази гореща корекция обаче има за цел да коригира само проблема, който е описан в тази статия. Прилагайте тази гореща корекция само към системи, които срещат този конкретен проблем.

Ако горещата корекция е налична за изтегляне, има раздел "Възможно е изтегляне на гореща поправка" в горната част на тази статия от базата знания. Ако този раздел не се появява, подайте заявка до отдела за обслужване на клиенти и поддръжка на Microsoft, за да получите горещата корекция.

Забележка: Ако възникнат допълнителни проблеми или ако е необходимо отстраняване на неизправности, може да се наложи да създадете отделно искане за обслужване. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към тази конкретна гореща корекция. За пълен списък на телефонните номера за обслужване на клиенти и поддръжка на Microsoft или за създаване на отделна заявка за обслужване посетете следния уеб сайт на Microsoft:

/contactus/?ws=support Забележка: Формулярът "Възможно е изтегляне на гореща поправка" показва езиците, за които е налична горещата поправка. Ако не виждате вашия език, това е защото не е налична актуална поправка за този език.

Повече информация

Типът изчакване на CMEMTHREAD показва изчакването на вътрешните, безопасни за нишка обекти в паметта. По-високите нива на паралелизъм на заявките могат да задействат изчакване, което води до намалена производителност на пространствената дейност.

Тази корекция разделя CMEMTHREAD, който се свързва с "Обект на пространствената памет", като използва разделяне на възел NUMA. Това намалява едновременните дейности на работниците до броя на планировчиците, активни на един възел. За системи с по-високи нива на планировчики на възел, флагът за проследяване –T8048 може да се използва за по-нататъшно разделяне на всички обекти от паметта, които позволяват разделяне по планировчик. Използвайте флага за проследяване внимателно, тъй като той внася малко разходи за памет за всички обекти памет, разделени от възел NUMA.

Забележка: Обектът в пространствената памет се създава, когато SqlServerSpatial110.dll се зарежда в адресното пространство на SQL Server процеса. В повечето случаи това изисква рестартиране на процеса на SQL Server, за да се приложат ефектите на флаг за проследяване.

Типът изчакване на CMEMTHREAD е увеличен за всяко чакане на безопасни в нишки обекти в паметта, а не само за пространствения обект. Следната дефиниция за сесия на XEvent и използване на публични символи могат да се използват за идентифициране на конкретния ред с код, който генерира чакания CMEMTHREAD:СЪЗДАВАНЕ НА СЕСИЯ НА СЪБИТИЕ wait_stacks
НА СЪРВЪР
ДОБАВЯНЕ sqlos.wait_info НА СЪБИТИЕ
(
      ACTION(Package0.callstack)
      where opcode = 1 – чакането е завършено
            и wait_type = 191 -- CMEMTHREAD
)
Добавяне на целеви package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
Добавяне на целеви package0.ring_buffer (SET max_memory = 4096)
С (MAX_DISPATCH_LATENCY = 1 СЕКУНДИ)
Старт
alter event session wait_stacks on server state = start
отидете

Изпълнение на възпроизвеждането

select event_session_address, target_name, execution_count, cast (target_data as XML)
От sys.dm_xe_session_targets xst
      Inner Join sys.dm_xe_sessions xs on (xst.event_session_address = xs.address)
където xs.name = 'wait_stacks'
отидете

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.