powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / estimator 2014 и выше
14 сообщений из 14, страница 1 из 1
estimator 2014 и выше
    #40036137
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(sql2017, sql2019)
столкнулся с такой проблемой (смотрим на картинке)
это отправная точка более навороченного запроса, и приводит оно к тому, что навороченный запрос в первом случае работает 20s, во втором 200ms
с хинтом option(use hint('FORCE_LEGACY_CARDINALITY_ESTIMATION')) или option(recompile) ((что вообще странно)) первый запрос работает так же как и второй.
с parameter sniffing = OFF, наоборот, второй работает как первый.

может кто объяснить поведение и для чего это сделано?
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036142
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой тип у t._Date_Time?
Что будет, если getdate()-10 заменить на dateadd(...) ?
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036154
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,
ничего не изменилось.
да хоть так
Код: sql
1.
2.
3.
declare @fromdate datetime = '20210105'
 select * from _Document151 t where t._Date_Time >= @fromdate;
 select * from _Document151 t where t._Date_Time >= '20210105';
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036163
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

надо бы статистики пересчитать в таком случае.
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036164
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

первым делом.
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036169
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

вообще интересно, 10% времени занимает скан, а 90% на что уходит?
PS понял, это объёмы.
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036172
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
Какой тип у t._Date_Time?
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036174
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

не, % это Actual/Estimated
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036175
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

засекретили секционирование? Почему просмотренные объемы разные?
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036177
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

нет секционирования никакого
просмотренные объемы одинаковые (синим)
разница только в оценке (красным)

тип поля datetime2, но и declare @fromdate datetime2 - никакого влияния не оказывает, проверял
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036183
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(не прицепилось чего-то)
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036219
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

Что-то вы не договаривете или не показываете....
В обоих показанных запросах - скан кластерного. Поэтому можно обоцениваться, но время работы должно быть примерно одинаковое.
А настолько разное оно будет, только если один из планов параллельный.
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036245
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

в приведенном примере вытащил все что мог..
никаких недоговорок.
и по времени/скорости/io статистике запросы практически не отличаются.
разница только в оценке

другое дело навороченный запрос, там 6 сущностей (на _Document151 change tracking), выборка по изменениям с последней запрошенной версии (немного, 1-3 записей в документе + 5-10 из табличных частей) и все это оборачивается в xml.
результирующий XML не больше 20Кб
однако поведение абсолютно такое-же, с параметром - 20!!! секунд, с вычислением или в LEGACY_CARDINALITY_ESTIMATION 0,2сек.
и источник проблемы именно в том, что неверная оценка практически на каждом этапе в плане, начиная вот с этого 151 документа.

грешил на СТ. отключал - не помогло
уровень совместимости на базах (от 110 (тоже не понял, вроде это legacy) до - 150) - не помогло
делал копии таблиц в другую базу - не помогло
на другой сервер (2016) - не помогло

осталось MAX_DOP на базе в 0 поставить, стоит 1, поэтому никаких параллельных планов пока.
...
Рейтинг: 0 / 0
estimator 2014 и выше
    #40036263
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

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

Лучше давайте актуальные планы быстрого и медленного запроса.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / estimator 2014 и выше
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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