Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
Дано: пустая таблица с columnstore index. Как ускорить вставку данных?
Вариант убить индекс, вставить данные в кучу, построить индекс заново не предлагать.
29 июл 19, 23:36    [21937349]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
Уточнение: SQL Server 2016 Developer Edition, данные берутся из вьюхи.
29 июл 19, 23:42    [21937354]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36968
И как вы выяснили, что проблема -- именно вставка?
30 июл 19, 00:24    [21937370]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
uaggster
Member

Откуда:
Сообщений: 827
Какую именно вставку? Массовую? По записи? Как вставляете? Что вставляете?
30 июл 19, 09:01    [21937448]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
komrad
Member

Откуда:
Сообщений: 5244
DaniilSeryi
Дано: пустая таблица с columnstore index. Как ускорить вставку данных?
Вариант убить индекс, вставить данные в кучу, построить индекс заново не предлагать.

доки уже читали?
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance

вот еще
http://henkvandervalk.com/data-loading-into-a-clustered-columnstore-index
30 июл 19, 10:04    [21937530]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
uaggster
Какую именно вставку? Массовую? По записи? Как вставляете? Что вставляете?


Внутри процедуры несколько сот тысяч строк разом из табличного представления.
30 июл 19, 23:39    [21938395]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
komrad
DaniilSeryi
Дано: пустая таблица с columnstore index. Как ускорить вставку данных?
Вариант убить индекс, вставить данные в кучу, построить индекс заново не предлагать.

доки уже читали?
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance

вот еще
http://henkvandervalk.com/data-loading-into-a-clustered-columnstore-index


Ещё нет, завтра почитаю.

Первая ссылка
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance
в переводе на русский
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance?view=sql-server-2016
аналогична по содержанию?
30 июл 19, 23:42    [21938400]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
Вот здесь [url=]https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/columnstore-indexes-query-performance?view=sql-server-2016[/url]

встретил фразу
"Создание индекса columnstore по умолчанию является параллельно выполняемой операцией, если ресурсы памяти неограниченны."


Правильно ли я понимаю, что имеет смысл использовать в запросе на вставку в таблицу с кластеризованным columnstore индексом подсказки MAXDOP ?
31 июл 19, 00:00    [21938412]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36968
DaniilSeryi
Внутри процедуры несколько сот тысяч строк разом из табличного представления.
Вы попробуйте тогда вставлять из нетабличного представления.
DaniilSeryi
аналогична по содержанию?
Обратитесь к филологу, чтобы он сделал экспертизу.
DaniilSeryi
встретил фразу
Вы "создание" от "вставки данных" вообще не отличаете?

Сообщение было отредактировано: 31 июл 19, 00:41
31 июл 19, 00:36    [21938427]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
DaniilSeryi
аналогична по содержанию?
В смысле, правильно ли сделан перевод?
Ктож будет проверять...
31 июл 19, 01:04    [21938438]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
DaniilSeryi,

Вы бы maxdop не крутили по каждому случаю, сервер сам разберётся.
31 июл 19, 01:10    [21938442]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
DaniilSeryi
Правильно ли я понимаю, что имеет смысл использовать в запросе на вставку в таблицу с кластеризованным columnstore индексом подсказки MAXDOP ?
Имеет смысл использовать подсказку TABLOCK, что бы разрешить параллельную вставку.
А MAXDOP имеет смысл крутить, если вы сами ограничили на серверере параллелилизм - что бы одними вашими настройками компенсировать другие ваши настройки.
31 июл 19, 06:48    [21938467]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
komrad
Member

Откуда:
Сообщений: 5244
DaniilSeryi
Первая ссылка
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance
в переводе на русский
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance?view=sql-server-2016
аналогична по содержанию?

ну, можно сохранить оригинальный текст в файлы и сделалать file compare
после этого найти разницу в исходных текстах и внести поправку на "особенности" перевода

вообще говоря, данная тема хорошо разжевана в интернете, с подробными графиками и сценариями использования

как минимум, для быстрой вставки необходимо хотя бы в delta store не попадать, а это размеры батчей от 104к до 1млн
31 июл 19, 11:05    [21938614]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
alexeyvg
DaniilSeryi
Правильно ли я понимаю, что имеет смысл использовать в запросе на вставку в таблицу с кластеризованным columnstore индексом подсказки MAXDOP ?
Имеет смысл использовать подсказку TABLOCK, что бы разрешить параллельную вставку.
А MAXDOP имеет смысл крутить, если вы сами ограничили на серверере параллелилизм - что бы одними вашими настройками компенсировать другие ваши настройки.


Благодарю. В общем, в моём случае использование TABLOCK снижает стоимость вставки из промежуточной таблицы в columnstore в 7 раз примерно, но так как стоимость даже неускоренной вставки составляет всего 2% от всего пакета запросов (транкейт / заполнение промежуточной таблицы / заполнение columnstore / удаление промежуточной таблицы)...

И моя благодарность всем ответившим - с введением промежуточной временной таблицы есть существенное повышение скорости, что и требовалось. Осталось перенести на прод и проверить там.
31 июл 19, 12:30    [21938754]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
В продолжении темы: Вставка строк ввода во временную таблицу жрёт больше половины времени - больше, чем выполнение табличного представления и вставка данных в кластерный индекс вместе взятые.

Как ускорить?
31 июл 19, 15:47    [21939042]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
komrad
Member

Откуда:
Сообщений: 5244
DaniilSeryi
Как ускорить?

посмотреть ожидания по сессии, сделать выводы


что из себя представляет "временная таблица" ?
это #таблица или моябаза..временная_таблица?
31 июл 19, 16:03    [21939062]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
komrad
DaniilSeryi
Как ускорить?

посмотреть ожидания по сессии, сделать выводы


что из себя представляет "временная таблица" ?
это #таблица или моябаза..временная_таблица?


#таблица
31 июл 19, 16:36    [21939108]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
komrad
Member

Откуда:
Сообщений: 5244
DaniilSeryi
komrad
пропущено...

посмотреть ожидания по сессии, сделать выводы


что из себя представляет "временная таблица" ?
это #таблица или моябаза..временная_таблица?


#таблица

это должен быть самый быстрый вариант
может база нагружена или сконфигурирована неоптимально (кол-во файлов, IFI, лежит на том же диске где и пользовательская бд?)

как заливаются записи? по одной или батчами?


"Вставка строк ввода во временную таблицу жрёт больше половины времени"
а вставка в моябаза..временная_таблица быстрей?

покажите
select @@version 
31 июл 19, 17:33    [21939169]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36968
Покажите уже код и план выполнения вместо ваших увлекательных историй.
31 июл 19, 17:37    [21939173]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Если вы хотите познать дзен загрузки в колоночные индексы, рекомендую сессию одного из самых хороших специалистов по сиквелу Joe Obbish-а: https://www.sqlsaturday.com/825/Sessions/Schedule.aspx
Там найдите его сессию: Improving Columnstore Load Scalability on Large Servers и скачайте презентацию.

Начинается с рассмотрения разных стратегий а потом постепенные улучшения, включая объяснения причин на очень глубоком уровне, почему так, короче очень полезно, почитайте. Читать надо после того как прочитана и понята вся документация, чтобы понимать о чем речь.
31 июл 19, 19:08    [21939256]     Ответить | Цитировать Сообщить модератору
 Re: Дано: пустая таблица с columnstore index. Как ускорить вставку данных?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
komrad
DaniilSeryi
#таблица

это должен быть самый быстрый вариант
Может, там таблица с кучей индексов, а вставка делается в одном потоке по одной записи из приложения?

DaniilSeryi нужно всё таки, как неоднократно говорили, задавать вопросы чуть более конкретно. Показать код, планы, статистики и т.д.
31 июл 19, 19:24    [21939265]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить