Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 trace flag 610 и SSIS 2014  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1258
Добрый день всем.

SQL 2014 целевой
(сорсовые разные - даже не знаю всех версий - скорей всего от 2012)

Есть куча однотипных пакетов SSIS 2014
к-е грузят инфу из удаленных серверов
1 в 1 (т.е 1 таблица (или вью) источника в 1 целевую таблицу )

либо как дельта по дате апдйета в _temp таблицу
(это обычная таблица с точно такой же стуркутурой как и целевая) и дальше Merge в целевую

либо целиком в _temp таблицу - и тогда Insert into <целевая> SELECT * from <_temp>
( регулируется это через управляющую таблицу - но это не важно )


Я делал большУю часть этих пакетов ( по одному шаблону ) из разных БД.

Проблема : Логи растут сильно

( ясно что при начальной загрузке огромных таблиц так и будет - там миллиарды записей
можно было бы конечно сделать руками SELECT * into from из темп таблицы 1 раз
- чтобы уменшьшить лог - но это выбивается из шаблона SSIS
)

тут в переписке админов ссылка проскочила :
https://technet.microsoft.com/en-us/library/Dd425070(v=SQL.100).aspx
(для меня это Новость)

По смыслу логгинг в этих БД (это landing базы - к-е в случае чего можно целиком перегрузить из источников
) нужен минимальный.

99% таблиц имеет КЛАСТЕРНЫЙ ПК.

SQL Server 2008 introduces trace flag 610, which controls minimally logged inserts into indexed tables. The trace flag can be turned on by using one of the following methods;
•Adding to the SQL Server startup parameters. ◦For more information, see (http://msdn.microsoft.com/en-us/library/ms345416.aspx) in SQL Server Books Online.

•Running ◦This enables the trace flag for a specific session.

This is useful if you want to enable 610 for only a subset of load scenarios on the instance, and it applies only to the Transact-SQL connection that issues it.
◦Use turns on the trace flag for all connections to the server until it is turned off or until the next server restart.


На прод. сервера у меня доступ будет вряд ли
но вот хочу проверить на деве :

◦This enables the trace flag for a specific session.

1?) Как это я могу сделать в SSIS пакете ( на уровне сессии ??)
я как-то НЕ уверен что процесс в SSIS юзает 1 сессию

я точно вижу что вставка в _temp идет :

insert bulk [dbo].[CONTACT_TEMP]
("ID" nvarchar(18) COLLATE SQL_Latin1_General_CP1_CI_AS ,


2?) Могу ли я это сделать на уровне проекта в SSMS (SSIS Integration catalog)
для всех пакетов

3?) Так как ole Db Sorce -> Target идет в _temp таблицу к-я НЕ юзаетяс другими процессами
то я понимаю Table lock = YES должен помочь быстрей грузить данные ?

4?) Ну и любые предложения велком по ускорению и уменьшению логов

желательно с девелоперской точки зрения - их я возможно смогу реализовать
но можно и с админской - для общего развития ( тут я вряд ли что изменю )

ps Пока я видел только shrink логов всунутый в отдельный жоб запускающийся по расписанию 1 раз ночью
29 июл 15, 17:02    [17951361]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Гулин Федор
Добрый день всем.

SQL 2014 целевой

Проблема : Логи растут сильно



Делайте BULK INSERT в буферы -- InMemory таблицы SCHEMA_ONLY .
Это гораздо быстрее других методов и без роста лога. И Trace Flag 610 не нужно вспоминать
29 июл 15, 18:47    [17951801]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
a_voronin
Гулин Федор
Добрый день всем.

SQL 2014 целевой

Проблема : Логи растут сильно



Делайте BULK INSERT в буферы -- InMemory таблицы SCHEMA_ONLY .
Это гораздо быстрее других методов и без роста лога. И Trace Flag 610 не нужно вспоминать

Какой милый совет!
А ничего, что человек себе данные консолидирует для дальнейшего использования, а ваше schema_only означает, что после рестарта данные пропадут, будто их и не было совсем?
Про то, как флаг в пакете выставить, не подскажу, но чего не надо в любом случае делать, так это логи шринковать. Ведь вырастут обратно, т. е. это только лишняя работа по наращиванию и занулению. И ждать это все приятного мало.
+
оказывается, a_voronin не в отпуске, надо же, а тут как раз недавно был топик про оптимизацию, его прикрыли угадайте из-за чего?
Даже у Гавриленко уже аллергия на inmemory
И да, он честно прикрыл, "не глядя на имена", ведь в отсутствие a_voronin - а с inmemory предложением выступил Mind.
Ну, поздравимся, товарищи, все вернулось на круги своя
29 июл 15, 19:52    [17952039]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
o-o
a_voronin
пропущено...


Делайте BULK INSERT в буферы -- InMemory таблицы SCHEMA_ONLY .
Это гораздо быстрее других методов и без роста лога. И Trace Flag 610 не нужно вспоминать

Какой милый совет!
А ничего, что человек себе данные консолидирует для дальнейшего использования, а ваше schema_only означает, что после рестарта данные пропадут, будто их и не было совсем?
Про то, как флаг в пакете выставить, не подскажу, но чего не надо в любом случае делать, так это логи шринковать. Ведь вырастут обратно, т. е. это только лишняя работа по наращиванию и занулению. И ждать это все приятного мало.
+
оказывается, a_voronin не в отпуске, надо же, а тут как раз недавно был топик про оптимизацию, его прикрыли угадайте из-за чего?
Даже у Гавриленко уже аллергия на inmemory
И да, он честно прикрыл, "не глядя на имена", ведь в отсутствие a_voronin - а с inmemory предложением выступил Mind.
Ну, поздравимся, товарищи, все вернулось на круги своя



Я сказал "в буферы" оттуда раскладывать и джойнить. Естественно пропадут при рестарте.

Не умеете вы InMemory готовить вот оно вам и не нравится.
29 июл 15, 20:06    [17952074]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
a_voronin
Я сказал "в буферы" оттуда раскладывать и джойнить. Естественно пропадут при рестарте.
Не умеете вы InMemory готовить вот оно вам и не нравится.

т.е. вместо одного раза будем 2 качать?
причем во второй раз из супер инмемори таблицы мы все равно будем вставлять куда?
в кластерную непустую таблицу, да?
и логировать по-полной.
а выигрыш-то в чем, простите?
29 июл 15, 21:08    [17952240]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Да как флаг выставить - вставить в поток запрос и все дела.

insert bulk и так выполняется с минимальным журналированием, насколько я понимаю.
30 июл 15, 11:33    [17954025]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
Владислав Колосов
Да как флаг выставить - вставить в поток запрос и все дела.

insert bulk и так выполняется с минимальным журналированием, насколько я понимаю.

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

К сообщению приложен файл. Размер - 61Kb
30 июл 15, 11:51    [17954122]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
Владислав Колосов
Да как флаг выставить - вставить в поток запрос и все дела.

а можете картинкой показать, какая это галочка в SSIS.
я его толком не знаю, но вдруг пригодится.
хочу попробовать выставить там флаг
30 июл 15, 11:52    [17954138]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
o-o,

Картинка с другого сайта.

Если ставить Fask Load то будет bulk insert порциями. Если включить TABLE LOCK , то предположительно и должен ваш знаменитый флаг включиться.

Вы хоть меня тут и передернули, но я всё же считаю, что лучше
1) Набалкинсертить данных в InMemory буфер и 2) потом переложить их с нужными преобразованиями с конечные таблицы и вашими любимыми флагами.

Просто в хранилищах данных информация проходит преобразования. И ETL лучше делать отдельными шагами отдельно Exctract , отдельно Transform и отдельно Load
30 июл 15, 12:24    [17954368]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
o-o,

Здесь я могу и ошибаться, я предположил, что для потока управления пакет не переподключается к серверу для выполнения каждого шага. В поток управления можно добавить Задача SQL.
30 июл 15, 12:24    [17954373]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
a_voronin
Если включить TABLE LOCK , то предположительно и должен ваш знаменитый флаг включиться.

ну да ну да.
вы соображаете, какие права уровня сервера надо иметь на включение трэйс флага?
а чтобы на табличку таблок повешать, вообще ничего не надо, кроме прав на эту таблицу.
и как вообще одно с другим связано-то? TF610 и query hint?
30 июл 15, 12:33    [17954428]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
a_voronin
Вы хоть меня тут и передернули, но я всё же считаю, что лучше
1) Набалкинсертить данных в InMemory буфер и 2) потом переложить их с нужными преобразованиями с конечные таблицы и вашими любимыми флагами.

Просто в хранилищах данных информация проходит преобразования. И ETL лучше делать отдельными шагами отдельно Exctract , отдельно Transform и отдельно Load

оно может и лучше, чем его темповый огород городить,
только тема-то не про это.
а про уменьшение логирования при вставке в непустую кластерную таблицу.
ну и какая же разница, откуда мы будем вставлять?
в смысле логирования?
30 июл 15, 12:36    [17954457]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1258
o-o
a_voronin
Вы хоть меня тут и передернули, но я всё же считаю, что лучше
1) Набалкинсертить данных в InMemory буфер и 2) потом переложить их с нужными преобразованиями с конечные таблицы и вашими любимыми флагами.


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


я чего то 1) вооще не понял
в _temp таблицу и идет вставка bulk

что такое есть InMemory буфер ?
по условиям задачи схему ( Source -> _Temp -> Target) менять нельзя (> 300 пакетов - )

надо ускорить процесс или за счет игр с настройками пакетов
(или вдруг настройки сервера - но это уже буду не я - но я могу предложить
и для себя мне интересно)


Меня сейчас интересует больше 3?)
3?) Так как ole Db Sorce -> Target идет в _temp таблицу к-я НЕ юзаетяс другими процессами
то я понимаю Table lock = YES должен помочь быстрей грузить данные ?
и тут желательно с пруф-линком на англ.

зы я конечно могу сделать 2 тест. пакет отличающихся 1 галочкой
засунуть в жоб и прогрурзить 10 раз для теста по времени (но боюсь там внешние факторы могут сыграть роль )

Вот переписка на эту тему с 1 умным человеком
Я :стоит ставить Table lock или нет
у нас грузистя вначале в _temp таблицу к-я вроде не юзается
если лочишь то быстрей будет ?


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


я примерно хочу услышать мнения в таком стиле (1 голова хорошо - а много лучше )
желательно с пруф-линками
31 июл 15, 13:38    [17959822]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
4ward
Member

Откуда:
Сообщений: 20
С советом использовать inmemory на продакшене, лучше быть аккуратнее, https://www.sql.ru/forum/1148798
Работает оно конечно быстро, но проблемы с БД были у многих, у меня в том числе.


3) https://technet.microsoft.com/ru-ru/library/ms180876(v=sql.105).aspx
31 июл 15, 14:29    [17960180]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
Гулин Федор
я чего то 1) вооще не понял
в _temp таблицу и идет вставка bulk
что такое есть InMemory буфер ?

объясняю для тех, кто не привык к местному развитию событий.
фишка в том, что у a_voronin-а стоит 2014-ый сервер, чему он несказанно рад и горд.
а фишка в фишке это то, что в 2014-ом появилась возможность работать не с обычными таблицами,
а инмемори.
запись в такие таблицы не логируется в традиционном понимании (пишутся только инсерты,
апдэйты -- это делиты и инсерты, все это не в лог-файл идет, а в дельта-файлы, таблица не мапируется на диск,
т.е. она не постранично организована, просто куча строк, т.е. не нужны GAM, SGAM, и т.д.),
особенно если, как предложил a_voronin, "InMemory таблицы SCHEMA_ONLY".
такая таблица после рестарта пустой будет, тк мы заказали ее данные на диске не сохранять вообще.
короче.
вся эта лирика не для этого случая,
но это уже не важно.
важно, т.е. просто жизненно необходимо, это постоянно всем навязывать.
в тему и нет. в основном, не в тему.
поэтому как бы мы все уже привыкли к парочке "a_voronin -- inmemory".
ну а кто не привык, что делать, можно просто пройти мимо,
а можно поинтересоваться темой и смело отметать подобные предложения,
когда они не по делу.
например, когда
Гулин Федор
по условиям задачи схему ( Source -> _Temp -> Target) менять нельзя (> 300 пакетов - )
31 июл 15, 14:48    [17960342]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
Гулин Федор
Вот переписка на эту тему с 1 умным человеком
Я :стоит ставить Table lock или нет
у нас грузистя вначале в _temp таблицу к-я вроде не юзается
если лочишь то быстрей будет ?


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


я примерно хочу услышать мнения в таком стиле (1 голова хорошо - а много лучше )
желательно с пруф-линками

пруф-линк это твоя же первая ссылка:
The Data Loading Performance Guide
а ответ на это все на моей картинке.
таблок поможет при вставке в ПУСТУЮ таблицу, кучу или кластерную,
также при вставке в непустую кучу, НО НЕ в непустую некластерную, как у тебя.
мог бы помочь тот самый (причем и без таблока тоже),
но как его выставлять в пакете никто не рассказал.
не говоря о том, что это даже не контрол на сервер, это нужно членство в сисадминах.


Гулин Федор
в _temp таблицу
(это обычная таблица с точно такой же стуркутурой как и целевая) и дальше Merge в целевую

может, темповая все же имеет не идентичную структуру и это куча?
тогда да, попробуй залочить, a если кто ее использует, сами прибегут жаловаться
31 июл 15, 15:01    [17960468]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Гулин Федор,

Вы бы для начала выяснили какая модель восстановления у БД, а то все попытки добиться минимального журналирования могут оказаться бесполезными.
31 июл 15, 15:45    [17960766]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
invm,
он если что переведет в BULK_LOGGED
31 июл 15, 15:46    [17960771]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Есть еще один момент: минимального журналирования не будет при условии вставки данных на частично заполненные страницы таблицы.
31 июл 15, 16:14    [17960982]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов
o-o,

Здесь я могу и ошибаться, я предположил, что для потока управления пакет не переподключается к серверу для выполнения каждого шага. В поток управления можно добавить Задача SQL.
Надо только в свойствах соединения выставить - RetainSameConnection. И убедиться что в пакете, не происходит распараллеливания задач с одним и тем же подключением, иначе он просто откроет второе соединение.

К сообщению приложен файл. Размер - 3Kb
31 июл 15, 19:02    [17961784]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1258
invm
Гулин Федор,

Вы бы для начала выяснили какая модель восстановления у БД, а то все попытки добиться минимального журналирования могут оказаться бесполезными.


из переписки (не моей) по моету они остановились на simple recovery
( я могу поиграться у себя - но даже не на деве)

RetainSameConnection
я не трогал -
распаралеливание - оно ж по идее должно ускорять процесс
4 авг 15, 13:43    [17973515]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
o-o
Guest
Гулин Федор
RetainSameConnection
я не трогал -
распаралеливание - оно ж по идее должно ускорять процесс

Mind ответил для варианта с TF610.
Владислав Колосов предложил его выставлять в SQL Script Task:
Владислав Колосов
я предположил, что для потока управления пакет не переподключается к серверу для выполнения каждого шага. В поток управления можно добавить Задача SQL.

ну, он выставится для той сессии, а хотели же для всей заливки.
a если будут открыты новые соединения, как в них выставить ?
потому и ответ
Mind
Надо только в свойствах соединения выставить - RetainSameConnection. И убедиться что в пакете, не происходит распараллеливания задач с одним и тем же подключением, иначе он просто откроет второе соединение.
4 авг 15, 13:53    [17973546]     Ответить | Цитировать Сообщить модератору
 Re: trace flag 610 и SSIS 2014  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Это если не трогать сервер и не установить этот флаг в параметрах запуска.
4 авг 15, 13:57    [17973563]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить