Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Live plan в SQL 2019 и большие проценты / 19 сообщений из 19, страница 1 из 1
25.11.2021, 12:51
    #40114823
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Я заметил что при определенных параметрах запроса (период данных) SQL 2019 (база в режиме совместимости с 2008) дает кривой Live plan
См приложенный скрин, такое впечатление что он не знает какое количество записей предстоит обработать.
Видимо нужно принудительное обновление статистики хотя флаг Т2371 установлен.
Вопрос - кто сталкивался с подобным и какие средства борьбы?
...
Рейтинг: 0 / 0
25.11.2021, 13:28
    #40114842
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

не используйте табличные переменные.
...
Рейтинг: 0 / 0
25.11.2021, 13:32
    #40114843
0wl
0wl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

Судя по фразе "при определенных параметрах запроса" - это больше похоже на Parameter Sniffing

Пересчёт статистик поможет, но только тем, что после этого будет построен новый план. Возможно, он будет оптимален для "определённых параметров", но так же возможно, что он будет неоптимален для всех остальных.

Я бы посмотрел на то, чем отличаются значения параметров в случаях, когда всё хорошо и всё плохо. Возможно, для "плохих" параметров можно как-то намеренно поменять текст запроса (например, поменять местами порядок колонок), чтобы для них строился другой план запроса
...
Рейтинг: 0 / 0
25.11.2021, 13:58
    #40114853
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
0wl
selis76,

Судя по фразе "при определенных параметрах запроса" - это больше похоже на Parameter Sniffing

Пересчёт статистик поможет, но только тем, что после этого будет построен новый план. Возможно, он будет оптимален для "определённых параметров", но так же возможно, что он будет неоптимален для всех остальных.

Я бы посмотрел на то, чем отличаются значения параметров в случаях, когда всё хорошо и всё плохо. Возможно, для "плохих" параметров можно как-то намеренно поменять текст запроса (например, поменять местами порядок колонок), чтобы для них строился другой план запроса


поддержу версию параметр сниффинга

касательно плана - в его свойствах показано для каких параметров он был скомпилирован

кроме того, есть такая штука как "temp table statistics reuse"
это использование статистики по #-таблице от других запросов/сессий
то есть, данные в #-таблице ваши, а статистика по ней - нет

кстати, запрос для сервера становится "новым" даже если в нем дополнительный лишний/незначащий пробел
...
Рейтинг: 0 / 0
25.11.2021, 14:36
    #40114881
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
komrad,

там в источнике, который автор выбросил из контекста, ожидаема одна строка.
...
Рейтинг: 0 / 0
25.11.2021, 14:42
    #40114884
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Владислав Колосов
komrad,

там в источнике, который автор выбросил из контекста, ожидаема одна строка.

вероятно
полный план помог бы понять причину

и в таблице #tt22 тоже ожидание одной строки
...
Рейтинг: 0 / 0
25.11.2021, 16:40
    #40114941
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Статистику пересчитал без параметров просто update statistics, не помогло. На узком периоде таже картина см скрин
Если смотреть узлы плана запроса видно что Estimated Number of Rows to Be read =1 а на Number of executions = 104732
т.е. получается SQL не может даже предположить сколько записей у него предполагается для данной операции
...
Рейтинг: 0 / 0
25.11.2021, 16:43
    #40114943
0wl
0wl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

лучше бы приложили весь план в XML

Всё ещё не видно, что происходит справа. Моё предположение - временная таблица без индекса, про которую SQL Server думает, что там всего 1 строка
...
Рейтинг: 0 / 0
25.11.2021, 16:44
    #40114944
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
0wl
selis76,

Судя по фразе "при определенных параметрах запроса" - это больше похоже на Parameter Sniffing

Пересчёт статистик поможет, но только тем, что после этого будет построен новый план. Возможно, он будет оптимален для "определённых параметров", но так же возможно, что он будет неоптимален для всех остальных.

Я бы посмотрел на то, чем отличаются значения параметров в случаях, когда всё хорошо и всё плохо. Возможно, для "плохих" параметров можно как-то намеренно поменять текст запроса (например, поменять местами порядок колонок), чтобы для них строился другой план запроса


Ну как понимаю Paramete sniffing лечится чисткой кэша запросов, но тут она не помогает. Все четко зависит от периода выборки
...
Рейтинг: 0 / 0
25.11.2021, 16:51
    #40114947
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76

Ну как понимаю Paramete sniffing лечится чисткой кэша запросов, но тут она не помогает. Все четко зависит от периода выборки

в тестовых целях попробуйте выполнить запрос с разными периодами с опцией recompile - этим вы исключите влияние сниффинга
сравните планы выполнения, если они разные
...
Рейтинг: 0 / 0
25.11.2021, 17:33
    #40114966
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

вы не там смотрите, ищите справа, где впервые появляется оценка в одну строку. Там или табличная переменная или временная таблица. А лучше прикрепите план.
...
Рейтинг: 0 / 0
25.11.2021, 18:35
    #40114977
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76Вопрос - кто сталкивался с подобным и какие средства борьбы?В чем собственно проблема?
Запрос плохо работает, плохой план.
Запрос работает хорошо, не работает Live plan aka SSMS’s Live Query Statistics?
Если последнее то вот статья Brent Ozar на эту тему https://www.brentozar.com/archive/2021/05/whats-the-buggiest-feature-in-sql-server/
...
Рейтинг: 0 / 0
25.11.2021, 19:57
    #40115003
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
SERG1257
selis76Вопрос - кто сталкивался с подобным и какие средства борьбы?
В чем собственно проблема?
Запрос плохо работает, плохой план.
Запрос работает хорошо, не работает Live plan aka SSMS’s Live Query Statistics?
Если последнее то вот статья Brent Ozar на эту тему https://www.brentozar.com/archive/2021/05/whats-the-buggiest-feature-in-sql-server/
Проблема в том что за период 1 день план запроса плохой вот с таким мегапроцентами, а за 5 дней план запроса хороший.
Это случает на определенных датах. Т.е. меньшая выборка идет по кривому плану с мегапроцентами , мега проценты это уже кривой план MS SQL
...
Рейтинг: 0 / 0
25.11.2021, 20:55
    #40115017
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76

Проблема в том что за период 1 день план запроса плохой вот с таким мегапроцентами, а за 5 дней план запроса хороший.
Это случает на определенных датах. Т.е. меньшая выборка идет по кривому плану с мегапроцентами , мега проценты это уже кривой план MS SQL

можно форсировать нужный план - см QueryStore
...
Рейтинг: 0 / 0
25.11.2021, 21:59
    #40115024
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Я могу конечно выложить полный кривой план, но что это даст? К сожалению запрос из 1С а там хинтами не поработаешь. Форсированием нового плана пока не заморачивался. Там ведь названия временных таблиц 1С не фиксированные, так как 1С по сути генератор запросов.
Видимо нужно в Microsoft написать в поддержку, мегапроценты вроде как ненормальная ситуация
...
Рейтинг: 0 / 0
25.11.2021, 22:10
    #40115028
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

кликните правой кнопкой по плану и выберите "сохранить как...".
Если "ничего не даст", то какой смысл был вообще писать.
...
Рейтинг: 0 / 0
25.11.2021, 22:23
    #40115034
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Владислав Колосов
selis76,

кликните правой кнопкой по плану и выберите "сохранить как...".
Если "ничего не даст", то какой смысл был вообще писать.


Я просто думал что возможно это ивестный баг и есть флаги какие нибудь на эту тему. Т2371 микрософт не просто так придумал, хотя при их идеологии статистики он должен быть в базе еще с 2008 SQL
...
Рейтинг: 0 / 0
26.11.2021, 10:57
    #40115154
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
selis76,

на баз не похоже, особенность запроса.
...
Рейтинг: 0 / 0
11.01.2022, 11:33
    #40125694
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Live plan в SQL 2019 и большие проценты
Кто интересовался планом прилагаю ДРУГОЙ запрос с похожей проблемой. Т.е. на одном конкретном дне медленно и неэффективно а если задать период шире то все нормально. При этом это один конкретный день где повидимому сломалась статистика или чтото связанное
https://cloud.mail.ru/public/t9ur/zAoDf5Vx6
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Live plan в SQL 2019 и большие проценты / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]