powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / оптимизировать время выполнения запроса.
25 сообщений из 38, страница 1 из 2
оптимизировать время выполнения запроса.
    #39957835
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые форумчане.
есть таблица (под миллиард записей), делаю простой запрос, возвращает от 1 до 200 строк( в зависимости от параметров), время выполнени может варьироваться вплоть до несколко минут.
Подскажите пожалуйста, можно ли как то это оптимизировать?

Server 2016.

Код: sql
1.
2.
3.
4.
5.
6.
 select   lips.VBELN, lips.ERDAT, lips.WERKS, lips. LGORT
from LIB_F6P_RTP.[sap].[LIPS] lips
where 
lips.matnr = '000000000080248026'
AND lips.charg = '9173786000'
and lips.lgort <>'';
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957836
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy,

перевести таблицу в columnstore
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957837
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Увы, я новичек в этом.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957851
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нету прав на создание
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957859
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
есть таблица (под миллиард записей), делаю простой запрос, возвращает от 1 до 200 строк( в зависимости от параметров), время выполнени может варьироваться вплоть до несколко минут.
Подскажите пожалуйста, можно ли как то это оптимизировать?
Очевидно, построить индекс:
Код: sql
1.
CREATE INDEX IX_LIPS_ ON LIB_F6P_RTP.[sap].[LIPS](MATRN, CHARG) INCLUDE(LGORT)


или даже лучше:
Код: sql
1.
CREATE INDEX IX_LIPS_ ON LIB_F6P_RTP.[sap].[LIPS](MATRN, CHARG) INCLUDE(LGORT, VBELN, ERDAT, WERKS)



kvitnitskiy
нету прав на создание
А если нет прав, то ничего нельзя сделать.
Это же очевидно: ничего нельзя сделать, раз запрещено что то делать.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957863
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Очевидно, построить индекс:
Код: sql
1.
CREATE INDEX IX_LIPS_ ON LIB_F6P_RTP.[sap].[LIPS](MATRN, CHARG) INCLUDE(LGORT)




Вот мне не очевидно, потому что потом таблица будет обвешана десятком индексов под каждый запрос и будет много места жрать. Медленный insert и update. А Columnstor тут прописан.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957868
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
alexeyvg
Очевидно, построить индекс:
Код: sql
1.
CREATE INDEX IX_LIPS_ ON LIB_F6P_RTP.[sap].[LIPS](MATRN, CHARG) INCLUDE(LGORT)



Вот мне не очевидно, потому что потом таблица будет обвешана десятком индексов под каждый запрос и будет много места жрать. Медленный insert и update. А Columnstor тут прописан.
Ну, индексы нужно создавать с умом, конечно. Смотреть типичные запросы, собирать статистику по распределению условий в запросах.

А вот насчёт Columnstor мне совершенно неочевидно. Звучит как призыв создавать Columnstor вместо даже кластерного уникального индекса.
Зачем тут Columnstor, если нужен поиск от одной до сотни записей по условию равенства пары полей? С таким подходом становится непонятно, почему МС не упразднила обычные индексы, ведь есть же Columnstor.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957872
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
нету прав на создание
Кстати, индексы можно создавать и в самом SAP
авторС помощью транзакции SE11 заходим в режим редактирования таблицы и нажимаем кнопку изменить. Затем Goto-->IndexesТам же можно посмотреть, какие индексы есть у этой таблицы.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957887
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
a_voronin
пропущено...

Вот мне не очевидно, потому что потом таблица будет обвешана десятком индексов под каждый запрос и будет много места жрать. Медленный insert и update. А Columnstor тут прописан.
Ну, индексы нужно создавать с умом, конечно. Смотреть типичные запросы, собирать статистику по распределению условий в запросах.

А вот насчёт Columnstor мне совершенно неочевидно. Звучит как призыв создавать Columnstor вместо даже кластерного уникального индекса.
Зачем тут Columnstor, если нужен поиск от одной до сотни записей по условию равенства пары полей? С таким подходом становится непонятно, почему МС не упразднила обычные индексы, ведь есть же Columnstor.


Я не призываю отказываться от обычных индексов, но тут выбор нескольких кодов, выбор небольшого объема из большой таблице. Ускорение будет как минимум от того, что занимать будет все меньше места.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957890
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg

авторС помощью транзакции SE11 заходим в режим редактирования таблицы и нажимаем кнопку изменить. Затем Goto-->Indexes


И все ложится с концами. Ибо надо смотреть какой скрипт будет.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957921
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Доступа как у эндюзера-нету.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39957973
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
alexeyvg,

Доступа как у эндюзера-нету.


Если ты ничо изменить не можешь => ничего ускорить нельзя.

ЗЫ. Хинт "БЫСТРО" еще в стадии разработки.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958030
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
А Columnstor тут прописан.


А обоснуй будет? Ибо мне тоже это утверждение видится весьма сомнительным.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958060
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
a_voronin
А Columnstor тут прописан.


А обоснуй будет? Ибо мне тоже это утверждение видится весьма сомнительным.


+1,

a_voronin,

там же выборка не диапазона, а можно сказать поиск по ключам.
конечно все зависит от селективности предиката, но если ТС говорит что будет возвращаться по 200 строк, то имхо колумстор тут избыточен
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958064
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, спасбио всем :)
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958106
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Критик
пропущено...


А обоснуй будет? Ибо мне тоже это утверждение видится весьма сомнительным.


+1,

a_voronin,

там же выборка не диапазона, а можно сказать поиск по ключам.
конечно все зависит от селективности предиката, но если ТС говорит что будет возвращаться по 200 строк, то имхо колумстор тут избыточен


Как раз выбирание небольшого числа записей на большой таблице при достаточно гранулярном условии фильтрации хорошо работает на колумнсторе. Таблица меньше занимает места, вы быстро выходить на очень узкий диапазон записей, выбираются только нужные поля, не затрагивая остальные. Это выгрузка из SAP отфильтрованная по номеру документа.

Просто по числу страниц, которые надо прочитать это гораздо меньше.

Альтернатива трансформируйте в схему Звезда, заменяя строковые ID на суррогатные INT.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958116
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
felix_ff
пропущено...


+1,

a_voronin,

там же выборка не диапазона, а можно сказать поиск по ключам.
конечно все зависит от селективности предиката, но если ТС говорит что будет возвращаться по 200 строк, то имхо колумстор тут избыточен


Как раз выбирание небольшого числа записей на большой таблице при достаточно гранулярном условии фильтрации хорошо работает на колумнсторе. Таблица меньше занимает места, вы быстро выходить на очень узкий диапазон записей, выбираются только нужные поля, не затрагивая остальные. Это выгрузка из SAP отфильтрованная по номеру документа.

Просто по числу страниц, которые надо прочитать это гораздо меньше.

Альтернатива трансформируйте в схему Звезда, заменяя строковые ID на суррогатные INT.


Вы таблицу видели?
А запрос?

Данные явно добавляются по дате, и в запросе нет фильтра по дате.

Большинство сегментов CS не получится исключить по метаданным, а следовательно будет полный скан всего миллиардного CS, а это гарантированно дольше (много дольше) поиска в 1 index seek (с одним спуском по дереву и последующему range scan) 200-300 записей.


А про вот это

a_voronin
Медленный ... update. А Columnstor тут прописан.


update вообще противопоказан для и CS , т.к. ( в отличии от insert-ов) он навсегда (до ребилда) зависнет в дельтасторе.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958125
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
колумнстор в принципе для статичных, редко пополняемых и еще реже изменяемых данных.
Автору нужен простой индекс.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958139
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
колумнстор в принципе для статичных, редко пополняемых и еще реже изменяемых данных.

Нет, он вполне подходит для append only таблиц (даже без секционирования). Всякие DWH, логи, потоки каких-то событий и т.п.

Асинхронный процесс автоматически собирает пачки добавленных записей из дельтасторе и генерит новые сегменты.

Вопрос в последующих выборках

Если это выборки с условием по монотонно растущему значению (обычно, дата событий, документа и т.п.), то метаднные сегментов (min max по каждому полю) позволяют быстро находить нужные сегменты.

Если это агрегаты по большой доли данных и только части полей, то сжатие позволяет читать меньше данных с диска, а колоночное хранение игнорировать данные прочих полей.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958142
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

Я не экспериментировал, но у меня есть смутное подозрение, что дельта-механизм будет вызывать периодические подвисания запросов при более-менее интенсивной вставке. Также есть сомнения относительно производительности переноса на реплику высокой доступности, эксплуатационного удобства, изменения схемы данных, к примеру.

Все нововведения имеют довольно значимые недостатки, компилированные процедуры, таблицы в памяти и прочее. Область применения довольно узкая и круг задач соответственный.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958147
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
msLex,

Я не экспериментировал, но у меня есть смутное подозрение, что дельта-механизм будет вызывать периодические подвисания запросов при более-менее интенсивной вставке. Также есть сомнения относительно производительности переноса на реплику высокой доступности, эксплуатационного удобства, изменения схемы данных, к примеру.

Все нововведения имеют довольно значимые недостатки, компилированные процедуры, таблицы в памяти и прочее. Область применения довольно узкая и круг задач соответственный.

Не переживайте, все это у нас работает и проблем нет.

Размер добавляемых данных (уже в пожатом в CS виде) около 1.5 ТБ в день.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958190
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Как раз выбирание небольшого числа записей на большой таблице при достаточно гранулярном условии фильтрации хорошо работает на колумнсторе. Таблица меньше занимает места, вы быстро выходить на очень узкий диапазон записей, выбираются только нужные поля, не затрагивая остальные. Это выгрузка из SAP отфильтрованная по номеру документа.

Просто по числу страниц, которые надо прочитать это гораздо меньше.
А можно как то расписать, сколько страниц будет читать сервер в обоих случаях?

Для указанного мной индекса это будет всегда одна страница.

А сколько будет для колумнстора? Например, для 50 записей, и для 5 записей, можете назвать число?
Я просто не понимаю, что это за такой волшебный индекс, который читает быстрее чем из дерева по ключу, и ещё и обновляется быстрее.

a_voronin
Альтернатива трансформируйте в схему Звезда, заменяя строковые ID на суррогатные INT.
Что трансформировать, базу SAP? :-)
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958198
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,


Господа, добавлю здесь, что это не конкретно база SAP, это так называемый Simplement, 1 в 1 зеркало SAP на базе MS SQL 2016, куда зеркалятся таблицы.
...
Рейтинг: 0 / 0
оптимизировать время выполнения запроса.
    #39958236
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
alexeyvg,


Господа, добавлю здесь, что это не конкретно база SAP, это так называемый Simplement, 1 в 1 зеркало SAP на базе MS SQL 2016, куда зеркалятся таблицы.
А в этом зеркале тоже запрещено создавать индексы?

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

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


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