KB3191487 – Подобрена стабилност на SQL Server и едновременно изпълнение на заявки за някои заявки columnstore в SQL Server 2014 и 2016

Отнася се за
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Симптоми

Имайте предвид сценария, описан по-долу:

  • Имате таблица, в която са клъстеризирани индекси columnstore, а таблицата има много колони (в стотици).
  • Данните (типът данни) на тези колони са данни с висока степен на компресия, например varchar.
  • Изпълнявате команда SELECT за тази таблица, за да изберете голямо подмножество или всички колони от тази таблица.
  • Вашата команда SELECT има клауза WHERE, която ограничава изхода до няколко реда (заявката е силно избирателна).

В този случай може да срещнете някой от следните симптоми или всички симптоми:

  • Паралелното работно натоварване (други заявки, които се изпълняват едновременно на сървъра като тази заявка) може да доведе до намаляване на производителността и загуба на пропускателна способност.
  • Може да забележите периодично високо натоварване на процесора.
  • Ако търсите sys.dm_os_ring_buffers и прегледате записи от типа SchedulerMonitor, ще откриете периодични съобщения за "непредоставящ набор" за планиране, регистрирани по време на изпълнението на тази заявка.
  • Може да получите грешка в графика за невръщане в регистрационния файл за грешки и може да бъде генериран файл за вторично копие на паметта за симптоми.

        
      

Решение

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

Препоръка: Инсталирайте най-новата кумулативна актуализация за SQL Server

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

      

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

Коригиране на подробни данниРаботниците, които обработват сегментите на колоните (декомпресират ги и ги сканират за отговарящи на условията редове), са използвали "отстъпването" на използването на ЦП на други работници/едновременни изпълнения на заявки, когато е бил изведен определен прагов брой редове. Когато клаузата WHERE беше силно селективна, за да създаде няколко реда, работниците, които обработваха тази заявка, обработваха некомпресиран и голям брой сегменти (тъй като много малко редове отговарят на изискванията), преди да се отдадат от процесора по кооперативен начин, за да могат другите работници да обработват работното им натоварване. Това доведе до нередовно използване на процесора и влошаване на производителността за едновременни работни натоварвания. Корекцията оптимизира и подобрява алгоритъма за споделяне на ЦП за такива заявки за columnstore.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.