Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка 170 000 000 записей / 25 сообщений из 37, страница 1 из 2
08.08.2020, 02:01
    #39987709
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
Скажите пожалуйста,

каким алгоритмом можно наиболее быстро можно загрузить 170 000 000 строк из Oracle в MSSQL при помощи SSIS пакета?

Заранее благодарен.
...
Рейтинг: 0 / 0
08.08.2020, 06:58
    #39987714
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
Загрузить - BCP.exe. Быстрее не бывает.

А вот выгрузить - проблема. Это у оракелистов надо спрашивать.
...
Рейтинг: 0 / 0
08.08.2020, 07:14
    #39987717
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
170 000 000 строк я бы упомянул если речь идет о выборке или поиске
Переливаете же вы все 170 000 000 строк, поэтому скорее важен размер данных.
...
Рейтинг: 0 / 0
08.08.2020, 12:16
    #39987731
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
Тут возможно узким местом будет сеть между серверами.

Поэтому искать перфекционизма а не стоит. А стоит просто посмотреть каким маршрутом польется информация и как этот маршрут можно выпрямить.
...
Рейтинг: 0 / 0
08.08.2020, 12:36
    #39987733
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah,

Быстро можно загрузить многопоточной загрузкой в пустую таблицу без индексов. Увеличивайте количество потоков, пока скорость загрузки не прекратит расти. Как только прекратит - значит вы уперлись в, скорее всего, сеть, диски приемника, диски источника
...
Рейтинг: 0 / 0
08.08.2020, 12:42
    #39987734
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah,

Using SSIS to load 1TB data into SQL Server in 30 mins, with simplified settings
Основное: настроить правильный размер буфера во избежание дискового обмена, секционировать таблицы и загружать секции параллельно.
...
Рейтинг: 0 / 0
08.08.2020, 12:51
    #39987735
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
.Евгений
vah,

Using SSIS to load 1TB data into SQL Server in 30 mins, with simplified settings
Основное: настроить правильный размер буфера во избежание дискового обмена, секционировать таблицы и загружать секции параллельно.


Дык, фся эта возня с настройками, секционированием и т.д. и т.п. займет больше времени, чем однопоточная вставка в простую таблицу.
...
Рейтинг: 0 / 0
08.08.2020, 13:24
    #39987740
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
aleks222
Дык, фся эта возня с настройками, секционированием и т.д. и т.п. займет больше времени, чем однопоточная вставка в простую таблицу.

Может быть. Но на простой вопрос - простой ответ. Не вижу смысла гадать по юзерпику, какую задачу на самом деле ему надо решить. Или, тем более - внушать, что задачу нужно решать не эту, а совсем другую.
...
Рейтинг: 0 / 0
08.08.2020, 13:28
    #39987743
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah
Скажите пожалуйста,

каким алгоритмом можно наиболее быстро можно загрузить 170 000 000 строк из Oracle в MSSQL при помощи SSIS пакета?

Заранее благодарен.


Если это разовое действие , то согласен с
aleks222
.Евгений
vah,

Using SSIS to load 1TB data into SQL Server in 30 mins, with simplified settings
Основное: настроить правильный размер буфера во избежание дискового обмена, секционировать таблицы и загружать секции параллельно.


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


Если это периодически, то прежде всего оценивайте объём данных: Вам написали :
PizzaPizza
170 000 000 строк я бы упомянул если речь идет о выборке или поиске
Переливаете же вы все 170 000 000 строк, поэтому скорее важен размер данных.


Ибо если у Вас одна таблица в пару столбцов int , то это всего 700 МБ данных (примерно), и вопросов нет.

Но если записи по 1К (и выше) на запись, то уже да,- тут стоит смотреть и сеть, и систему хранения... И алгоритм заливки...

PS Кстати, если система хранения одна (без разницы - это "полка" или RAID), то с точки зрения самой системы хранения,- абсолютно пофиг на секционирование - т.к. "физически" данные польются через один канал на один набор дисков (если они сконфигурированы в общий набор , который потом порезан на логические юниты). Но это моё мнение. Но вопрос о конфигурации системы хранения НЕ стоит игнорировать.
...
Рейтинг: 0 / 0
08.08.2020, 15:23
    #39987768
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
PizzaPizza,

выборка, без условий, около 20ти столбцов, есть varchar-ы (
...
Рейтинг: 0 / 0
08.08.2020, 18:27
    #39987811
Нестандартное мышление
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah,

BULK INSERT чем не устраивает?
...
Рейтинг: 0 / 0
08.08.2020, 20:01
    #39987821
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
с одной стороны конечно varcharы хорошо бы нативно перекинуть SSISом, а не балком через файл
с другой стороны, раз они из оракла, то я бы все равно подумал бы о кодировках и прочем даже при использовании SSIS
...
Рейтинг: 0 / 0
08.08.2020, 20:24
    #39987828
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah
PizzaPizza,

выборка, без условий, около 20ти столбцов, есть varchar-ы (

Если твоя задача - одноразовая то сделай любым способом экспорт в CSV и потом импорт в другую БД.

Если будешь делать на постоянной основе - тогда расскажи форуму о статистике. Тоесть какая
будет длина этого CSV файла. Какая средняя длина строки в байтах.
...
Рейтинг: 0 / 0
09.08.2020, 22:59
    #39988001
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah
PizzaPizza,

выборка, без условий, около 20ти столбцов, есть varchar-ы (
на время экспорта данные в оригинальной БД не меняются?
...
Рейтинг: 0 / 0
10.08.2020, 09:55
    #39988059
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
vah,

0. Разово или постоянно?
1. Есть ли секционирование на источнике или иная возможность быстро получить в параллель непересекающиеся множества?
2. В каком виде предоставлен доступ к источнику данных?
...
Рейтинг: 0 / 0
10.08.2020, 09:55
    #39988062
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
andreymx,

Там же версионник, главное на snapshot too old при select .. as of timestamp не влететь
...
Рейтинг: 0 / 0
10.08.2020, 10:15
    #39988070
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
env
andreymx,

Там же версионник, главное на snapshot too old при select .. as of timestamp не влететь
на таком объёме влетит обязательно

хотя вдруг там экзадата со всем фаршем?
...
Рейтинг: 0 / 0
10.08.2020, 12:21
    #39988118
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
andreymx,

Обычный DataFlow из источника в назначение. Поставить опции fastload и размер порции не менее 100000. Можно 500000. Драйвера на Oracle OLEDB , на MSSQL SQL Native Client или тоже OLE DB.
...
Рейтинг: 0 / 0
10.08.2020, 12:56
    #39988145
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
на самом деле 170 млн строк не так уж и много

тут еще вопрос уже поднимали насчет пропускной способности сети
и еще могут быть тормоза, если сервер оракл на земле, а сервер мсскл в ажуре (или наоборот)
...
Рейтинг: 0 / 0
10.08.2020, 13:24
    #39988157
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
для SSIS был драйвер Attunity для оракла
но там надо версии смореть - последний раз я юзал его для 2014 - по моему версия 3.0
выигрыш по скорости был и приличный.

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

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

ну и путем экспериментов нашли оптимальное решение под себя.

зы можно еще линк-сервер - но это точно медленней - хотя я грузил приличные объемы данных ночью кусочками по 2-3 дня
удобней что можно в t-sql написать цикл и просто гнать
но тогда нагрузки на оракл-сервер другой не было
...
Рейтинг: 0 / 0
10.08.2020, 14:36
    #39988218
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
andreymx
на самом деле 170 млн строк не так уж и много

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


Надо сразу писать инкрементальную загрузку. Чтобы она продолжала с того места, где закончила. Надеяться, что 170 лямов пройдут за один заход не стоит.
...
Рейтинг: 0 / 0
10.08.2020, 15:53
    #39988257
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
a_voronin
Чтобы она продолжала с того места, где закончила


Что, к сожалению, возможно далеко не всегда. Особенно, если источник не предполагает сообщать об обновлениях и, что ещё хуже, удалениях.
...
Рейтинг: 0 / 0
10.08.2020, 16:00
    #39988264
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
env
a_voronin
Чтобы она продолжала с того места, где закончила


Что, к сожалению, возможно далеко не всегда. Особенно, если источник не предполагает сообщать об обновлениях и, что ещё хуже, удалениях.
у ТС слишком общая задача
гадать не перегадать
...
Рейтинг: 0 / 0
10.08.2020, 16:06
    #39988274
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
env
a_voronin
Чтобы она продолжала с того места, где закончила


Что, к сожалению, возможно далеко не всегда. Особенно, если источник не предполагает сообщать об обновлениях и, что ещё хуже, удалениях.


При любом раскладе есть решение через доп таблицу и триггер на источнике. На Oracle они не так сильно тупят как на MSSQL.
...
Рейтинг: 0 / 0
10.08.2020, 16:51
    #39988293
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка 170 000 000 записей
a_voronin
При любом раскладе есть решение через доп таблицу и триггер на источнике. На Oracle они не так сильно тупят как на MSSQL.


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


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