Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор 2019 / 13 сообщений из 13, страница 1 из 1
11.06.2021, 16:39
    #40077254
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Осваиваюсь с новой версией MS SQL 2019 , периодически удивляет оптимизатор
Дают простой запрос
select top 10 * from dbo.msg_buffer where MsgCounter>2560000000
order by MsgCounter asc
Он думает 4 минуты, и выдавая план 100% Clustered index scan

Причем индекс там очевидный, что сканировать там неясно. Ну да есть конечно order by , но что получается архисложно первых записей по условию отобрать из индекса?
Вопрос - можно ли это как то ускорить?

ALTER TABLE [dbo].[msg_buffer] ADD CONSTRAINT [PK_msg_buffer] PRIMARY KEY CLUSTERED
(
[MsgCounter] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF)
GO
...
Рейтинг: 0 / 0
11.06.2021, 16:48
    #40077257
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
selis76
Осваиваюсь с новой версией MS SQL 2019 , периодически удивляет оптимизатор
Дают простой запрос
select top 10 * from dbo.msg_buffer where MsgCounter>2560000000
order by MsgCounter asc
Он думает 4 минуты, и выдавая план 100% Clustered index scan

Причем индекс там очевидный, что сканировать там неясно. Ну да есть конечно order by , но что получается архисложно первых записей по условию отобрать из индекса?
Вопрос - можно ли это как то ускорить?

ALTER TABLE [dbo].[msg_buffer] ADD CONSTRAINT [PK_msg_buffer] PRIMARY KEY CLUSTERED
(
[MsgCounter] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF)
GO


А таблица случаем не секционирована?
...
Рейтинг: 0 / 0
11.06.2021, 17:29
    #40077265
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
msLex

А таблица случаем не секционирована?
,
Секционирована, но этот индекс содержит основное поле MsgCounter по которому идет секционирование - поэтому скана по всем секциям быть не должно
...
Рейтинг: 0 / 0
11.06.2021, 17:38
    #40077266
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
selis76,

тип MsgCounter какой?
...
Рейтинг: 0 / 0
11.06.2021, 17:39
    #40077268
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
selis76
Секционирована

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design
...
Рейтинг: 0 / 0
11.06.2021, 17:43
    #40077269
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
msLex
selis76
Секционирована

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


Т.е. наш любимый сиквел сервер не умеет распараллеливать запросы к секциям??? Чё, правда что ли? А зачем они тогда нужны?
...
Рейтинг: 0 / 0
11.06.2021, 17:43
    #40077270
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Кесарь
msLex
пропущено...

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


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

Очень странный и неверный вывод.
...
Рейтинг: 0 / 0
11.06.2021, 17:48
    #40077273
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint.
...
Рейтинг: 0 / 0
11.06.2021, 17:52
    #40077274
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Владислав Колосов
Автору может помочь between начало_секции and конец_секции. Скорее всего MsgCounter имеет тип bigint.


Блин, дикость какая-то. Я не ваше решение имею в виду, а поведение сиквел сервера.
...
Рейтинг: 0 / 0
11.06.2021, 22:55
    #40077304
Mr. X
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
selis76,

А что с полной версией сервера?
...
Рейтинг: 0 / 0
13.06.2021, 22:34
    #40077436
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Mr. X
selis76,

А что с полной версией сервера?

15.0.2000.5
...
Рейтинг: 0 / 0
13.06.2021, 22:39
    #40077437
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
Кесарь
msLex
пропущено...

Проблем в этом.

top + сортировка + выбор данных из нескольких секций ведут к такому не оптимальному плану.
by design


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


Ну с распаралеливанием там есть нюанс в 2019 это во всех редакциях доступно, а до этого было не во всех
https://docs.microsoft.com/ru-ru/sql/sql-server/editions-and-components-of-sql-server-version-15?view=sql-server-ver15
Но на самом деле параллельных запросов по секциям стоит избегать поскольку они будут утыкаться в дисковую подсистему да и поле секционирования в условия включают не просто так а чтобы запрос шел по конкретным сециям
...
Рейтинг: 0 / 0
14.06.2021, 01:48
    #40077443
Mr. X
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизатор 2019
selis76,

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


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