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

Я знаю, что 2008 год устарел, но потребность есть потребность, не имеющая отношения к источникам.

Я использую SSIS 2008 и SQL Server 2008 R2,

Мои требования

  1. Загрузите данные из нескольких исходных файлов, используя массовую загрузку в потоке управления (размер каждого файла составляет 20 гигабайт в формате .txt -- всего 150 гигабайт для 5 файлов примерно)
  2. Таблица SQL одиночная (Tabledata с 243 столбцами)

Я использовал массовую загрузку файлов SSIS 5, но она долгое время блокировалась, любая помощь приветствуется.


person vikki    schedule 03.08.2020    source источник
comment
Ни то, ни другое не вопросы. Что ты вообще здесь спрашиваешь?   -  person Larnu    schedule 03.08.2020
comment
Я перешел от вопросов к требованиям .. надеюсь, что это имеет смысл .. Cherrs   -  person vikki    schedule 03.08.2020
comment
Итак, опять же, что вы спрашиваете здесь? Вы публикуете вопрос; поэтому вам нужно задать вопрос.   -  person Larnu    schedule 03.08.2020
comment
Мне нужна помощь в вышеуказанных требованиях!   -  person vikki    schedule 16.08.2020
comment
Но вы отметили ответ как решение, что означает, что эта проблема решена.   -  person Larnu    schedule 16.08.2020
comment
Объявление вопроса решенным означает, что он решен; значит на ваш вопрос ответили. Если это не так, либо снимите отметку с ответа как решенного, либо задайте новый вопрос, расширяющий ту часть, на которую у вас нет ответа. Вы не просто поставили ему балл (проголосовали за него?), пометка вопроса как решенного — это совсем другое действие, чем голосование за. Как работает принятие ответа? Если вам все еще нужна помощь с требованиями, это означает, что вопрос не решен . Если да, то что не решается? Как насчет ответа, который вы называете решением, не так ли?   -  person Larnu    schedule 18.08.2020
comment
Обратите внимание, что, поскольку вы отметили этот вопрос как решенный, вы вряд ли получите новые посещения от пользователей, поскольку они часто не просматривают решенные вопросы, если у них нет той же проблемы. Вот почему очень важно, чтобы вы помечали его как решенный только тогда, когда это действительно так, или вы создаете новый вопрос, который связан, но важно не является дубликатом, он показывает другие части, которые не являются решена в проблеме, с которой вы столкнулись.   -  person Larnu    schedule 18.08.2020


Ответы (2)


Чтобы получить наилучшую производительность при загрузке таблицы, мы хотим загружать данные целыми грузовиками (блокировка таблицы). Проблема в том, что в заливе есть место только для одного грузовика. В противном случае, если вы хотите одновременно вводить несколько каналов в таблицу, вы, вероятно, будете забрасывать данные полной лопатой - таким образом, 5 рабочих могут быть там, и их загрузка не будет блокировать друг друга, но пропускная способность уменьшится. .

Если у вас Enterprise Edition или вы хотите вернуться к старой школе с разделенным представлением в Standard Edition, тогда вы могли бы загружать каждый раздел/отдельную таблицу параллельно, а затем у вас было бы N рабочих процессов, загружающих данные так быстро, как позволяет дисковая подсистема, и никаких конфликтов, с которыми вы сейчас сталкиваетесь.

Как указывает @David Browne, SQL Server поддерживает параллельную массовую загрузку в неиндексированные таблицы кучи

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

В вашем OLE DB Destination это будет Fast Load (по умолчанию) и установите флажок Table lock. Как говорится в статье msdn, таблица назначения должна быть пустой, иначе блокировка будет IX-Tab, а не BU-tab.

person billinkc    schedule 03.08.2020
comment
SQL Server поддерживает параллельную массовую загрузку неиндексированных таблиц кучи. См. docs.microsoft.com/en-us/previous-versions/sql/ - person David Browne - Microsoft; 03.08.2020
comment
Спасибо за указатель @DavidBrowne-Microsoft Надеюсь, я включил соответствующие фрагменты в ответ, и теперь у меня есть забавная вещь, с которой можно поиграть этим вечером;) - person billinkc; 03.08.2020

Да, вы можете загружать из нескольких источников. Я читаю из нескольких источников одновременно и пишу, используя опцию fast load.

введите здесь описание изображения

person Raj More    schedule 03.08.2020
comment
Union all будет частично блокирующим компонентом, что может повлиять на общую пропускную способность. - person billinkc; 03.08.2020
comment
@billinkc, не могли бы вы рассказать о частичной блокировке? - person Raj More; 03.08.2020
comment
jorgklein.com/2008 /02/28/ Когда строки исходного буфера попадают в Union All, они копируются в новые буферы и отправляются по пути, поэтому на скриншоте у вас есть 4 набора буферов, три из которых работают независимо, а затем у вас есть этот союз, где каждая исходная строка копируется в новый буфер. - person billinkc; 03.08.2020