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

Откуда: Moscow
Сообщений: 609
Добрый день!

СУБД: 2014 SP2-CU2 Enterprise

Периодически съезжает план у процедуры, запрос:

IF @tiHasBeenCycleParsed = 1 AND LEN(@strParam) >= 4 AND EXISTS (
                                  SELECT 1
                                  FROM T1 l
                                  JOIN T2 c ON c.ID = l.ID
                                  WHERE l.ID = @ID AND c.Number LIKE '%' + @strParam
             )




При плохом плане запрос висит до 30 сек с cmd CONDITIONAL с типом ожидания SOS_SCHEDULER_YIELD, при этом cpu на несколько порядков больше чем при нормальном плане.

Лечится проблема сбросом плана выполнения запроса.

К сообщению приложен файл. Размер - 72Kb
19 июн 17, 13:06    [20574394]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 609
Плохой план:

К сообщению приложен файл. Размер - 97Kb
19 июн 17, 13:07    [20574395]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3857
andrew shalaev,

OPTION (OPTIMIZE FOR UNKNOWN(@strParam UNKNOWN))
19 июн 17, 13:09    [20574400]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 609
andrew shalaev,

Думаю надо вынести подзапрос, есть ли у кого другие идеи как решить проблему съезжающего плана?
19 июн 17, 13:10    [20574409]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
aleks2
Guest
andrew shalaev
andrew shalaev,

Думаю надо вынести подзапрос, есть ли у кого другие идеи как решить проблему съезжающего плана?


Боюсь показаться банальным, но

1. Перестать маяться херней
c.Number LIKE '%' + @strParam

2. Сделать таки индексы на таблицах.
19 июн 17, 13:41    [20574522]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
andrew shalaev
Плохой план:


Индекс нужен,
19 июн 17, 17:31    [20575557]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
andrew shalaev,
3 нормальной формы , в данных то нет..
19 июн 17, 17:33    [20575565]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Если нет 3 нормальной формы, не требуйте что нибудь быстрого. Надо мужиком. Быть. Или олтп или олап, отчёты.
19 июн 17, 17:37    [20575585]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3857
sparrow
Если нет 3 нормальной формы, не требуйте что нибудь быстрого. Надо мужиком. Быть. Или олтп или олап, отчёты.

мужик, а как ты определил отсутствие этой самой формы?
19 июн 17, 17:39    [20575594]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
TaPaK
sparrow
Если нет 3 нормальной формы, не требуйте что нибудь быстрого. Надо мужиком. Быть. Или олтп или олап, отчёты.

мужик, а как ты определил отсутствие этой самой формы?


По плану заноса.
19 июн 17, 18:37    [20575777]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
И запросу.
19 июн 17, 18:38    [20575781]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Если есть лайк , все, даже 1 нормальной формы нет.
В одной колонке , много значений...
19 июн 17, 18:44    [20575797]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Надо курить 3 нормальную форму а лучьше пятую.
Разленивили, вас ораклы
19 июн 17, 18:50    [20575812]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35095
sparrow
Если есть лайк , все, даже 1 нормальной формы нет.
В одной колонке , много значений...
Поделитесь, пожалуйста, вашими веществами. Почему вдруг условная таблица-справочник фамилий перестанет быть "даже в первой нормальной форме", если мне захочется найти в ней всех людей, у кого фамилии заканчиваются на -ов? Или каждую букву в отдельную запись?...
19 июн 17, 19:02    [20575836]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Гавриленко Сергей Алексеевич
sparrow
Если есть лайк , все, даже 1 нормальной формы нет.
В одной колонке , много значений...
Поделитесь, пожалуйста, вашими веществами. Почему вдруг условная таблица-справочник фамилий перестанет быть "даже в первой нормальной форме", если мне захочется найти в ней всех людей, у кого фамилии заканчиваются на -ов? Или каждую букву в отдельную запись?...

С уважением,да ,не всегда, но не в этом конкретном случае.
19 июн 17, 19:08    [20575852]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35095
sparrow
Гавриленко Сергей Алексеевич
пропущено...
Поделитесь, пожалуйста, вашими веществами. Почему вдруг условная таблица-справочник фамилий перестанет быть "даже в первой нормальной форме", если мне захочется найти в ней всех людей, у кого фамилии заканчиваются на -ов? Или каждую букву в отдельную запись?...

С уважением,да ,не всегда, но не в этом конкретном случае.
Вы такой вывод сделали из-за имени поля Number?
19 июн 17, 19:10    [20575857]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Гавриленко Сергей Алексеевич,

Но тогда это сисемма ответная, или олап.
От таких и ждут запросы типач что было вчера.
19 июн 17, 19:13    [20575869]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Научите меня соеденить олтп и олап.?
19 июн 17, 19:15    [20575875]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35095
sparrow
Научите меня соеденить олтп и олап.?
Модератор: Хотите флудить на тему структуры, делайте,
пожалуйста, это в соответствующем форуме: http://www.sql.ru/forum/db-design
19 июн 17, 19:18    [20575883]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Но все равно. Не надо ждать хорошего от , лайка никогда.

Надо всех чётко индексировать!
19 июн 17, 19:32    [20575907]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Гавриленко Сергей Алексеевич,
Технически, если поле индексированно, по фулл индексу, я бы заточил, inner join или Даже whre с лаком, но это по любому конец оптимизатору.



Лайки только , когда все в хинтах. Это и не sql
19 июн 17, 20:56    [20575997]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35095
sparrow
Лайки только , когда все в хинтах
Вопрос здесь как бы и задан, как план зафиксировать.
sparrow
Это и не sql
В справке написано, что like является частью TSQL, так что завязывайте вы с вашей агитацией.
19 июн 17, 20:59    [20576001]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20353
Гавриленко Сергей Алексеевич
sparrow
Лайки только , когда все в хинтах
Вопрос здесь как бы и задан, как план зафиксировать.
sparrow
Это и не sql
В справке написано, что like является частью TSQL, так что завязывайте вы с вашей агитацией.


Завязал! но все равно интересно. Топик стартер дал бы воспроизводимый тест , все встало бы на свои места.
19 июн 17, 21:44    [20576056]     Ответить | Цитировать Сообщить модератору
 Re: Съезжающий план процы  [new]
invm
Member

Откуда: Москва
Сообщений: 7504
andrew shalaev
При плохом плане запрос висит до 30 сек с cmd CONDITIONAL с типом ожидания SOS_SCHEDULER_YIELD, при этом cpu на несколько порядков больше чем при нормальном плане.
Судя по планам, процитированное случается, когда в T1 нет строки с ID = @ID, а в T2 для ID = @ID достаточно много строк.
В этом случае, в первом плане, в отличии от второго, до T2 дело не доходит. Отсюда и быстрое выполнение.
Зафиксировать план можно, написав
from T1 l inner loop join T2 on ...


Еще способ - прикрутить plan guide.
19 июн 17, 22:56    [20576122]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить