Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Firedac/Ado тормозит запрос из delphi  [new]
joker63
Member

Откуда:
Сообщений: 42
Есть хранимка в базе.
Выполнение её из mangment studio 1 секунда.
Выполнение из Delphi может достигать минуты.

Вчера настроил подключение с ADO и c Firedac. запрос через ADO выполнялся 30-40 секунд. Через Firedac моментально. Подумал глюк адошки, перевёл все на Firedac и забыл.
Сегодня ситуация наоборот. ADO=1 секунда. Firedac 25-30 сек.
Продублировал процедуру, вызываю её. всё работает.
Заново пересоздал процедуру, тоже все заработало. Но, часа на 3 :), потом ситуация повторилась.

Полез в профайлер:
1. Запрос из Студии: CPU: 374, Reads:2274
2. Запрос через ADO: CPU: 390, Reads:2262
3. Запрос через FireDAC: CPU: 27721, Reads:105799

Help me, please :(
2 фев 16, 16:59    [18763185]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
Glory
Member

Откуда:
Сообщений: 104751
joker63
Help me, please :(

Классика
Разные планы выполнения
2 фев 16, 17:01    [18763196]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8584
joker63,

процедура с параметрами?
2 фев 16, 17:04    [18763223]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
joker63,
Скорее всего такое явление, как parameter sniffing. Возможные решения гугляться за несколько минут.
2 фев 16, 17:15    [18763307]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
joker63
Member

Откуда:
Сообщений: 42
Владислав Колосов,

да. 3 параметра. int и две даты
2 фев 16, 17:20    [18763336]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
Glory
Member

Откуда:
Сообщений: 104751
joker63
да. 3 параметра. int и две даты

И все 3 параметра одинаковые чтоли всегда ?
Или для одних параметров миллион записей выбирается, а для других - парочка ?
2 фев 16, 17:22    [18763345]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
joker63,
Да, это классика. Читайте про parameter sniffing
2 фев 16, 17:22    [18763348]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Если множественные рекомпиляции для Вас не критичны, то в конец запроса добавляйте OPTION(RECOMPILE) и проблема решена.

Но хотелось бы увидеть, что у Вас за запрос.
2 фев 16, 17:23    [18763355]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
joker63
Member

Откуда:
Сообщений: 42
Glory,

для одних одна строка, для других >500


wizli,

видимо вы правы. создал локальные переменные, и все заработало
https://habrahabr.ru/post/109580/
Посмотрим изменится ли завтра :)


AlanDenton,

OPTION(RECOMPILE) пробовал. не помогло
2 фев 16, 17:28    [18763414]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
Glory
Member

Откуда:
Сообщений: 104751
joker63
для одних одна строка, для других >500

1 000 000 тоже >500
2 фев 16, 17:30    [18763430]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
joker63, вот прямо взяло и не помогло :)

Запрос покажите полностью. Так задать можно долго в чем печаль Вашего запроса.
2 фев 16, 17:30    [18763437]     Ответить | Цитировать Сообщить модератору
 Re: Firedac/Ado тормозит запрос из delphi  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
joker63
wizli,

видимо вы правы. создал локальные переменные, и все заработало
https://habrahabr.ru/post/109580/
Посмотрим изменится ли завтра :)

Я помню года три назад тоже работал в связке SQL+Delphi. Тоже сталкивался с такими проблемами.
2 фев 16, 17:32    [18763449]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить