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

Откуда:
Сообщений: 173
Всем привет.
Есть такая проблема, циклом загружаются xml'ки с сервера oracle, поле хранится в формате clob. XML очень большого размера поэтому загружаются очень медленно.

Цикл забирает по 500 строчек + сжимает поле в varbinary (иначе занимают слишком много места)

1 итерация цикла занимает по времени 6 минут
без сжатия в varbinary 4 минуты
без этого поля 3 секунды

Есть какие нибудь варианты ускорить процесс но и место не сжирать?
16 авг 19, 17:04    [21951277]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2394
assmsk,

так где медленно? на стороне оракла, или мс?
16 авг 19, 17:17    [21951294]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33644
Блог
assmsk,

самое быстрое - распараллелить
16 авг 19, 18:14    [21951341]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
msLex
Member

Откуда:
Сообщений: 8073
Критик
assmsk,

самое быстрое - распараллелить


тут же вопрос во что упирается

может база в FULL + в синхронной AG и все на ожидании записи commit-ов в лог вторичной реплики висит?
16 авг 19, 18:46    [21951367]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4720
assmsk
Всем привет.
Есть такая проблема, циклом загружаются xml'ки с сервера oracle, поле хранится в формате clob. XML очень большого размера поэтому загружаются очень медленно.

Цикл забирает по 500 строчек + сжимает поле в varbinary (иначе занимают слишком много места)

1 итерация цикла занимает по времени 6 минут
без сжатия в varbinary 4 минуты
без этого поля 3 секунды

Есть какие нибудь варианты ускорить процесс но и место не сжирать?


SSIS
19 авг 19, 15:44    [21952617]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Иногда дискеткой быстрее.
19 авг 19, 18:09    [21952757]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
assmsk
Member

Откуда:
Сообщений: 173
msLex,
база в bulk logged
20 авг 19, 14:56    [21953513]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
assmsk
Member

Откуда:
Сообщений: 173
a_voronin,
пробовал пакетом, выйгрыш практически не заметен
20 авг 19, 14:57    [21953516]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
assmsk
XML очень большого размера

любой здоровый блоб что писать, что читать, медленне не бывает.
все время уходит на построение/чтение г-дерева,
в котором живет блоб.
(*г-дерево в данном случае это не есть научный термин,
г тут от слова, точно описывающего сущность сей структуры данных)
---
огласите средний размер в Гб того, что идет в данное поле,
скорее всего это и есть ваша проблема
20 авг 19, 15:11    [21953540]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
a_voronin, Владислав Колосов,

Делал через linked server к oracle. Проблем не было. Скорость не интересовала.
20 авг 19, 15:15    [21953544]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Gator
a_voronin, Владислав Колосов,
Делал через linked server к oracle. Проблем не было. Скорость не интересовала.

и вы тоже огласите размер своих блобов.
может, они вообще в INROW влазили
20 авг 19, 15:17    [21953545]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
Yasha123, у меня да. Влезали в 7000
в основном были фото/сканы паспортов, дипломов, родух...
Художественные фотки - на диске.
20 авг 19, 15:31    [21953556]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
так я и говорю.
когда все лезет в инроу, можно и блобом это не называть.
а у ТС здоровый блоб, он сам написал.
и все время идет на запись его в дурацкое дерево.
и читаться будет, кстати, с такой же скоростью.

ТС, как там с чтением уже записанного, те же тормоза?
20 авг 19, 15:40    [21953564]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
Yasha123,

Ну... клиенту - клментово, серверово - серверу.
Не хватало ещё на ТSQL PDFs и TIFFы разбирать.
20 авг 19, 16:06    [21953589]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Gator
Yasha123,

Ну... клиенту - клментово, серверово - серверу.
Не хватало ещё на ТSQL PDFs и TIFFы разбирать.

а почему это мне адресуется?
я пдф-ы в таблицах не храню.
даже совсем наоборот:
на новом месте работы товарищи их хранили,
а с моим приходом все блобы выкатились обратно на диск
и база теперь занимает 1/10 первоначального объема.
я - злейший враг blob-ов и identity, потому что эти 2 сущности меня достали
20 авг 19, 16:17    [21953610]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14981
Yasha123
а почему это мне адресуется? Картинка с другого сайта.

Типа иллюстрации ваших слов Картинка с другого сайта.
20 авг 19, 16:26    [21953622]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Gator
Yasha123
а почему это мне адресуется? Картинка с другого сайта.

Типа иллюстрации ваших слов Картинка с другого сайта.

а где я на словах или еще как "на ТSQL PDFs и TIFFы разбираю"
20 авг 19, 16:39    [21953644]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
msLex
Member

Откуда:
Сообщений: 8073
Yasha123
Gator
пропущено...

Типа иллюстрации ваших слов Картинка с другого сайта.

а где я на словах или еще как "на ТSQL PDFs и TIFFы разбираю" Картинка с другого сайта.

поздно, теперь не отмоетесь.
20 авг 19, 16:40    [21953646]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
msLex,
пока вы тут, вопросец для вас.
+ offtopic
вы случайно не в курсе,
почему при переносе таблицы с identity,
если на identity PK clustered,
то даже при переносе вида

set identity_insert t2 on;

insert into t2 with(tablock) -- PK on t2(id)
(...)
select ...
from t1
order by id -- PK on t1(id);

присутствует sort?
т.е. в скане t1 ordered = False.

это точно гадит identity,
потoму что если в новой таблице сделать sequence + default на поле,
все отлично переносится без сорта

20 авг 19, 17:04    [21953672]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
msLex
Member

Откуда:
Сообщений: 8073
Yasha123
msLex,
пока вы тут, вопросец для вас.
+ offtopic
вы случайно не в курсе,
почему при переносе таблицы с identity,
если на identity PK clustered,
то даже при переносе вида

set identity_insert t2 on;

insert into t2 with(tablock) -- PK on t2(id)
(...)
select ...
from t1
order by id -- PK on t1(id);


присутствует sort?
т.е. в скане t1 ordered = False.

это точно гадит identity,
потoму что если в новой таблице сделать sequence + default на поле,
все отлично переносится без сорта




+ offtopic

Я не часто занимался переносом identity (хотя и приходилось), и такой проблемы не наблюдал (возможно, просто не обращал внимания)

Проблема именно с PK, или достаточно уникального кластерного индекса?
На "старых" версиях (те, что до появления IDENTITY_CACHE) тоже воспроизводится?
20 авг 19, 17:26    [21953691]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Yasha123,

15651284
20 авг 19, 17:32    [21953696]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
msLex
Member

Откуда:
Сообщений: 8073
msLex
Yasha123
msLex,
пока вы тут, вопросец для вас.
+ offtopic
вы случайно не в курсе,
почему при переносе таблицы с identity,
если на identity PK clustered,
то даже при переносе вида

set identity_insert t2 on;

insert into t2 with(tablock) -- PK on t2(id)
(...)
select ...
from t1
order by id -- PK on t1(id);



присутствует sort?
т.е. в скане t1 ordered = False.

это точно гадит identity,
потoму что если в новой таблице сделать sequence + default на поле,
все отлично переносится без сорта




+ offtopic

Я не часто занимался переносом identity (хотя и приходилось), и такой проблемы не наблюдал (возможно, просто не обращал внимания)

Проблема именно с PK, или достаточно уникального кластерного индекса?
На "старых" версиях (те, что до появления IDENTITY_CACHE) тоже воспроизводится?



+ offtopic

ну и главное, вы сравниваете перенос id (set identity_insert on) с генерацией новых id (sequence)

если вставку в таблицу с identity делать без set identity_insert on, в плане тоже появляется сортировка?
20 авг 19, 17:35    [21953698]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
msLex,
+

нет, я сравниваю ровно то же.
у них тут переполняется ид с типом int и с кластерным ПК по этому полю.
в таблице 170Гб + памяти на сервере всего 40Гб.
менять тип альтером вообще не катит, таблица активно используется все время.
хотя и только на вставку и чтение, апдэйты исключены.
поэтому пришлось переносить в новую таблицу, где вместо int bigint.
так вот перелив в такой же структуры таблицу (c identity) имеет в плане сорт.

этот сорт не уходит ни при каком топе -- это коммент в огород Тапка,
там по ссылке решение от invm прокатило, а в моем случае НЕТ.

с сиквенсом ровно все то же, я переношу **старые** значения идентити обычным инсертом.
в таблицу все с тем же кластеным по тому же ид, которое теперь НЕ identity.
дефолт прописан на будущее, на послепереносное использование таблицы как замена identity.

да, пришлось начать сиквенс (minvalue) со значения, на миллион больше имевшегося макс. значения ид в старой таблице.
зато время простоя 0.
пока у меня шел перелив, навставляли новых строк, но мне все равно,
ибо сразу после перелива был rename обеим таблицам
и все новые вставки повалились в новую же таблицу с bigint.
тем временем спокойно переношу навалившееся в старую таблицу за время перелива,
ибо этого навалившегося меньше миллиона строк(перелив шел 2 часа, и разумеется без сорта)
и у меня эти значения ид в новой таблице задействованы не были
20 авг 19, 18:05    [21953718]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
msLex
Member

Откуда:
Сообщений: 8073
Yasha123
msLex,
+

нет, я сравниваю ровно то же.
у них тут переполняется ид с типом int и с кластерным ПК по этому полю.
в таблице 170Гб + памяти на сервере всего 40Гб.
менять тип альтером вообще не катит, таблица активно используется все время.
хотя и только на вставку и чтение, апдэйты исключены.
поэтому пришлось переносить в новую таблицу, где вместо int bigint.
так вот перелив в такой же структуры таблицу (c identity) имеет в плане сорт.

этот сорт не уходит ни при каком топе -- это коммент в огород Тапка,
там по ссылке решение от invm прокатило, а в моем случае НЕТ.

с сиквенсом ровно все то же, я переношу **старые** значения идентити обычным инсертом.
в таблицу все с тем же кластеным по тому же ид, которое теперь НЕ identity.
дефолт прописан на будущее, на послепереносное использование таблицы как замена identity.

да, пришлось начать сиквенс (minvalue) со значения, на миллион больше имевшегося макс. значения ид в старой таблице.
зато время простоя 0.
пока у меня шел перелив, навставляли новых строк, но мне все равно,
ибо сразу после перелива был rename обеим таблицам
и все новые вставки повалились в новую же таблицу с bigint.
тем временем спокойно переношу навалившееся в старую таблицу за время перелива,
ибо этого навалившегося меньше миллиона строк(перелив шел 2 часа, и разумеется без сорта)
и у меня эти значения ид в новой таблице задействованы не были



+

В ссылке TaPaK, как раз и говориться, что "гадит" identity_insert, как я и предполагал.
А еще там упоминается TF 8795, со стандартной оговоркой "на свой страх и риск"
20 авг 19, 18:10    [21953721]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
+

я из дома прочту нормально,
тут не сильно получается держать открытым кириллическое окно.

просто обычно все решения от invm катят,
а это не прошло,
а читать все объяснения надо в более спокойной обстановке.
спасибо всем!

а вообще identity гадит по всем статьям,
у меня впервые Standard, и partitioned view не выносит identity,
так что ему(identity) все равно смерть неминуема,
равно как и всем блобам, которые у меня благополучно получили под зад.

вообще не сервер, а книга рекордов Гиннеса.
при такой памяти и с таким объемом данных у них еще что-то там ворочалось

...извиняюсь за выплеск...
20 авг 19, 18:18    [21953726]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить