MS SQL Server, traceflag для запрета параллелизма

В 12 версии появился такой вот интересный флаг трассировки, которого раньше очень не хватало:

9495 Disables parallelism during insertion for INSERT…SELECT operations and it applies to both user and temporary tables. For more information, see Microsoft Support article

 

Иногда с ожиданиями CXPACKET и SOS_SCHEDULER_YIELD  возникала следующая проблема- их величина достигала нескольких тысяч секунд в минуту. Фактически стояли десятки потоков. Приходилось даже не повышать стоимость распараллеливаемых запросов а вовсе отказываться от параллелизма:

 

sp_configure ‘show advanced options’, 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure ‘max degree of parallelism’, 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

 

..но метод этот плох тем, что очищается процедурный кэш, удаляются планы запросов. Сервер еще долго после восстанавливается, заново перекомпилируя планы запросов. Сейчас достаточно взвести флаг трассировки.

dbcc traceon(9495,-1)

К сожалению, в 2008 версии этот флаг не работает.

 

Ну и ссылка на тему, пример использования этого флага:

 

Poor performance when you run INSERT.. SELECT operations in SQL Server 2016

 

И еще один очень интересный флаг трассировки

 

dbcc traceon(9389,-1)

Dynamic memory grant for batch mode operators

Starting with SQL Server 2016, if you have enough RAM and suffering from the TempDB Spills that do have a significant impact on your workload, then you can enable the Trace Flag 9389 that will enable Batch Mode Iterators to request additional memory for the work and thus avoiding producing additional unnecessary I/O.

I am glad that Microsoft has created this functionality and especially that at the current release, it is hidden behind this track, and so Microsoft can learn from the applications before enabling it by default, hopefully in the next major release of SQL Server.

Заявлено, что флаг для 16 версии, но на 12 стандарт он применился.

Случилось мне такое наблюдать:

17.000Memory Grants Outstanding||SQLServer:Memory Manager

14.000Memory Grants Pending||SQLServer:Memory Manager

 

..как раз для таких случаев. Эффект пока неочевиден, изучаю.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *