Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: долгий инсерт  [new]
инсерт
Guest
StarikNavy,

Переписал

Сначала данные через data flow task заливаются во временую таблицу, потом через execut sql task делаю инсерт
Надеюсь так будет быстрее
21 авг 13, 14:38    [14736379]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2395
инсерт
Надеюсь так будет быстрее


зачем надеяться? тестить надо
индекс вернули? план инсерта посмотрели?
21 авг 13, 14:50    [14736498]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Glory
Member

Откуда:
Сообщений: 104751
инсерт
Сначала данные через data flow task заливаются во временую таблицу,

Заливаются откуда ?
21 авг 13, 14:52    [14736519]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
инсерт
Guest
Glory,

Из чужой базы

Я понять не могу: если data flow task такая медленая, почему не пользоваться только execute sql task и внутри прописывать
insert into [dbo].[t1]
select * from [t]
21 авг 13, 15:09    [14736675]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 799
кстати к слову - только сегодня попалась случайно на глаза интересная статейка про долгие инсерты, ожидания и секционирование - тынц
21 авг 13, 15:11    [14736686]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Glory
Member

Откуда:
Сообщений: 104751
инсерт
Я понять не могу: если data flow task такая медленая, почему не пользоваться только execute sql task и внутри прописывать

А сразу написать
insert into [dbo].[t1]
select * from [чужая база]..[t]
без всяких data flow task/execute sql task ?
21 авг 13, 15:14    [14736717]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 799
инсерт
Glory,

Из чужой базы

Я понять не могу: если data flow task такая медленая, почему не пользоваться только execute sql task и внутри прописывать
insert into [dbo].[t1]
select * from [t]


там, насколько я помнить - не только в самом data flow дело - а в типе destination - ADONET/OLEDB/SQL Server Destination - они используют разные провайдеры данных и общаются по-разному с источником, - в итоге по-другому, эффективнее будет использоваться журнал транзакций. По-моему что-то из этих компонентов bulk-insert использует, нет?
21 авг 13, 15:17    [14736751]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PsyMisha
По-моему что-то из этих компонентов bulk-insert использует, нет?

То есть загрузку данных через файл? Вы уверены? Или вы имели в виду SqlBulkCopy?
21 авг 13, 15:31    [14736908]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
инсерт
Guest
инсерт
StarikNavy,

Переписал

Сначала данные через data flow task заливаются во временую таблицу, потом через execut sql task делаю инсерт
Надеюсь так будет быстрее



Проверил реально быстрее.

Теперь думаю везде заменить "data flow task" на "execut sql task с инсерторм"
21 авг 13, 15:47    [14737089]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
Гость333,

наверное, имел в виду логирование.
что-то по одной записи инсертит,
а что-то пачками.
т.е. меняется число операций, валящихся в лог
21 авг 13, 15:51    [14737122]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Glory
Member

Откуда:
Сообщений: 104751
инсерт
Теперь думаю везде заменить "data flow task" на "execut sql task с инсерторм"

Вы раздели чтение/добавление данных на две операции и удивляетесь что время выполнения изменилось ?
21 авг 13, 15:56    [14737178]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
инсерт
Guest
Glory
инсерт
Теперь думаю везде заменить "data flow task" на "execut sql task с инсерторм"

Вы раздели чтение/добавление данных на две операции и удивляетесь что время выполнения изменилось ?



почему Вы так считаете?

я понимаю что data flow task считывает данные т.е. делает селект, а потом делает инсерт
тоже самое делает и execut sql task с инсертом

instert **
select * from t1

Мне кажется, что разница в том , что instert в "execut sql task"и instert в "data flow task" вставляют по разному
21 авг 13, 16:03    [14737246]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Glory
Member

Откуда:
Сообщений: 104751
инсерт
почему Вы так считаете?

Потому что вы не знаете, какие команды выполняются, где они выполняются и за какое время

инсерт
я понимаю что data flow task считывает данные т.е. делает селект, а потом делает инсерт

Вот откуда вы это понимаете, если в этой теме спрашивали про "где почитать про data flow task" ?
21 авг 13, 16:06    [14737272]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 799
Гость333
То есть загрузку данных через файл? Вы уверены? Или вы имели в виду SqlBulkCopy?


это не обязательно через файлы, это имеется в виду любой standard-compliance таргет -
http://technet.microsoft.com/en-us/library/ms141237.aspx

Excel Destination - это тот же OLEDB Destination, просто оболочка над ним для упрощения понимания, к примеру
21 авг 13, 16:07    [14737288]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
PsyMisha
Гость333
То есть загрузку данных через файл? Вы уверены? Или вы имели в виду SqlBulkCopy?


это не обязательно через файлы, это имеется в виду любой standard-compliance таргет -
http://technet.microsoft.com/en-us/library/ms141237.aspx

Excel Destination - это тот же OLEDB Destination, просто оболочка над ним для упрощения понимания, к примеру


не-не, тут спрашивали, с чего Вы взяли, что выполняется именно BULK INSERT.
и уточняется: под балком-то что понимаете?
потому как есть сомнения по этому поводу :)
BULK INSERT
21 авг 13, 16:12    [14737352]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 799
o-o,

про балк я думаю то же самое, что и technet, пусть и на-испанском),
но про destinations в Data Flow Task имел в виду что, например у объекта "ADO.NET Destination" есть свойство "Use bulk insert when possible", а у "OLEDB Destination" - такой опции нет
21 авг 13, 17:23    [14737942]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
PsyMisha,

прошу прощения за испанский,
но смысл Вы уловили?
т.е. Гость333 угадал про файлы?
ну так и каким боком файлы к теме ТС, он же из базы в базу льет.
ну и конечно Use bulk insert when possible:
possible, это когда выгрузка в файл.
или Вы предлагаете из базы в файл, а потом из файла в базу?
21 авг 13, 17:28    [14737966]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3646
o-o
PsyMisha
пропущено...


это не обязательно через файлы, это имеется в виду любой standard-compliance таргет -
http://technet.microsoft.com/en-us/library/ms141237.aspx

Excel Destination - это тот же OLEDB Destination, просто оболочка над ним для упрощения понимания, к примеру


не-не, тут спрашивали, с чего Вы взяли, что выполняется именно BULK INSERT.
и уточняется: под балком-то что понимаете?
потому как есть сомнения по этому поводу :)
BULK INSERT

https://www.simple-talk.com/sql/reporting-services/using-sql-server-integration-services-to-bulk-load-data/
21 авг 13, 17:39    [14738028]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 799
o-o,

ничего за испанский, это полезно для развития бывает, ога)

Я не понимаю, с чего вы взяли, что я предлагал изврат со временным файлом?
Зачем, если действительно льется из базы в базу.

но OLEDB Destination так же предлагает как таргет не только файлы, но и базы данных, через "Native OLE DB\SQL Server Native Client 10.0", сейчас специально зашел-посмотрел даже))

но еще раз повторяю, у этого объекта отсутствует свойство "use bulk insert", в то время как в более новом "ADO.NET Destination" оно присутствует

Ваша фраза - "possible, это когда выгрузка в файл." - не совсем понял, прошу прощения - имеется в виду, что когда выгружаешь в файл, можно BULK использовать?)
21 авг 13, 17:40    [14738033]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Empirical
Member

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

ID у Вас identity? Пробуйте таблок, симпл модель, убрать тригеры.
21 авг 13, 17:46    [14738062]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
может я чего не понимаю, но какой еще магический BULK использует это ADO NET Destination?
ищу на всю фразу в гугле:
ADO NET Destination Use bulk insert when available

там пишут такое:

Use bulk insert when available
Specify whether to use the System.Data.SqlClient.SqlBulkCopy interface to improve the performance of bulk insert operations.

хорошо, иду по указанной ссылке:
System.Data.SqlClient.SqlBulkCopy

там вычитываю:

Remarks

Microsoft SQL Server includes a popular command-prompt utility named bcp for moving data from one table to another, whether on a single server or between servers. The SqlBulkCopy class lets you write managed code solutions that provide similar functionality.

ну а уж про bcp известно точно:

The bcp utility bulk copies data between an instance of Microsoft SQL Server and a data file in a user-specified format.

т.е. снова приплыли к файлам?
или как еще bcp moves data from one table to another?

еще поиски в гугле на то же Use bulk insert when available привели к ряду жалоб,
типа использование этой галочки вырубает check constraints и foreign keys.
тогда понятно, откуда скорость, но все равно непонятно, почему BULK.
дайте что-ли ссылку, где расписано толком, какой BULK используется.
21 авг 13, 17:51    [14738094]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
PsyMisha
Ваша фраза - "possible, это когда выгрузка в файл." - не совсем понял, прошу прощения - имеется в виду, что когда выгружаешь в файл, можно BULK использовать?)


ну да.
то, что я (и вроде бы и Гость333) понимаю под BULK INSERT
(цитата из "Вас": 14736751)
неизбежно подразумевает файл.

а что подразумевает галка на ADO.NET Destination, я никак не могу найти.
т.е. какой механизм используется при включении этой галки?
фраза Use Bulk Insert When Possible меня приводит к единственной возможности -- файлу,
т.к. синтаксис BULK INSERT включает в себя файл :)
21 авг 13, 17:59    [14738144]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
Гость333
Member

Откуда:
Сообщений: 3683
o-o
там пишут такое:

Use bulk insert when available
Specify whether to use the System.Data.SqlClient.SqlBulkCopy interface to improve the performance of bulk insert operations.

Да, я тоже нашёл такое. Не знал про эту галочку, поэтому и решил, что "bulk-insert", о котором упомянул PsyMisha — это команда BULK INSERT.

o-o
т.е. снова приплыли к файлам?

Нет, для SqlBulkCopy файлы не нужны.
В msdn есть примеры использования SqlBulkCopy, поищите.

В общем, в MS решили поступить хитро, используя для опции "Use Bulk Insert" вовсе не команду BULK INSERT
21 авг 13, 18:03    [14738164]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
o-o
Guest
Гость333,

а что они используют?
если Вы раскопали, не поделитесь ссылкой?
или это то, что и мне попало: просто все констрейнты игнорирует?
21 авг 13, 18:11    [14738200]     Ответить | Цитировать Сообщить модератору
 Re: долгий инсерт  [new]
kalimba
Member

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

Советую к прочтению - http://msmvps.com/blogs/gladchenko/archive/2010/03/09/1761298.aspx .
21 авг 13, 18:42    [14738338]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить