Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Простите коллеги, тема .NET-овская, но тесно пересекается с MSSQL.
Вы не могли бы заглянуть в одноименный топик в другом подфоруме этого сайта?:
https://www.sql.ru/forum/1277921/ado-net-sqlclient-datareader-zhutkie-tormoza
22 ноя 17, 15:51    [20975526]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
dgnhfswgn
Guest
Async=true в ConnectionString ?

https://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx
22 ноя 17, 15:59    [20975563]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Вам же в другом топике уже кидали ссылку. Вот на русском тоже самое:

http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part1/
22 ноя 17, 16:42    [20975740]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Привет!

Ситуация прояснилась, см. в оргигинальном топике (ссылка вначале постинга)

@Модераторы: т.е. ситуация переехала от ADO.NET к MSSQL, может стоит топик сюда перекинуть?
24 ноя 17, 10:07    [20979957]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Yuri Abele,
а там нечто новое?

вкратце: товарищ переопределил в коде входящий параметр процедуры,
а в процедуре "два десятка таблиц, фильтрующихся, по этой дате".
и теперь, внимание, шокирующий вывод:

автор
Т.е. похоже, что query optimizator выбирает разные планы выполнения в зависимости от значения параметра на входе,
а не того значения, которое, потом, в запросе к таблице применится!
Добавить к заголовку процедуры WITH RECOMPILE никаких изменений не породило


а вы не знали, что переопределить параметр внутри это и есть "заглушить parameter sniffing"?
т.е. разумеется, никакой WITH RECOMPILE для процедуры не поможет,
оптимайзер не лазит в код и не интересуется вашими переопределениями параметров.

хотите прослушивание -- добавьте option(recompile) **каждому** из запросов с этим "переопределенным" параметром
24 ноя 17, 10:33    [20980045]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Yasha123,

спасибо за совет.

P.S. Коллега, будьте терпимее к другим
24 ноя 17, 10:54    [20980144]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
извиняюсь
24 ноя 17, 10:59    [20980158]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Отключил WITH RECOMPILE - нет в нем смысла в нашем случае и добавил где надо:
OPTION (RECOMPILE, USE HINT ('DISABLE_PARAMETER_SNIFFING'))

Еще раз спасибо за наводку!
24 ноя 17, 11:11    [20980188]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Yuri Abele,
автор
USE HINT ('DISABLE_PARAMETER_SNIFFING')

Эмм... а это ещё зачем???? Вы же и так перекомпилируете с конкретными параметрами
24 ноя 17, 11:13    [20980199]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
TaPaK,

на всякий случай :-)
24 ноя 17, 11:40    [20980307]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
архивариус
Member

Откуда:
Сообщений: 149
сколько экземпляров этого кода может работать одновременно (разные пользователи, хосты, сессии, ...) ?
как часто они могут дергать эту процедуру в единицу времени (в секунду, минуту)?
сколько времени она выполняется когда "быстро"?
24 ноя 17, 13:18    [20980781]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
архивариус
Member

Откуда:
Сообщений: 149
параноя mode on;

мне одному показалось вероятно местные эксперты (dba) переложили проблему ts(developer) на плечи его dba?
параноя mode off;
24 ноя 17, 16:04    [20981410]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
архивариус
параноя mode on;

мне одному показалось вероятно местные эксперты (dba) переложили проблему ts(developer) на плечи его dba?
параноя mode off;

в смысле, бедный сервер зарекомпайлится?
кто ж его знает, нам отсюда не видно.
но когда ТС на такое пожалуется,
мы выдадим ему альтернативное решение без рекомпиляций вообще.

+ альтернативщина
данную процедуру переделать в обертку.
в ней анализировать тот переопределяемый параметр @LastSyncDateTime.
и если он не налл, передавать его в ровно такую же сп, что и сейчас,
но без SET @LastSyncDateTime = ISNULL(@LastSyncDateTime, '1980-01-01');
знаем же, что не налл, и его и передаем.

а вот если налл, я так понимаю, они по дате вообще не фильтруют.
вызываем вторую сп, типа первой, но без фильтра по дате

но, если честно, и это тоже,
равно как и предыдущее решение,
описано по приведенной ссылке.
почему мы должны за него выбирать,
что ему больше подходит, непонятно
24 ноя 17, 17:03    [20981635]     Ответить | Цитировать Сообщить модератору
 Re: ADO.NET-SqlClient-DataReader: Жуткие тормоза  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Yuri Abele
TaPaK,

на всякий случай :-)
Это чтобы последователи ломали себе голову, что же именно программист-криворучка хотел сделать...
автор
DISABLE_PARAMETER_SNIFFING Disables parameter sniffing unless OPTION(RECOMPILE), WITH RECOMPILE or OPTIMIZE FOR value is used.
24 ноя 17, 19:53    [20982056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить