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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда:
Сообщений: 1973
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

Откуда:
Сообщений: 9033
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
Сообщений: 6802
Yasha123,

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

Откуда:
Сообщений: 9033
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

Откуда:
Сообщений: 1973
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

Откуда:
Сообщений: 9033
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

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

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

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

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

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

...извиняюсь за выплеск...
20 авг 19, 18:18    [21953726]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Yasha123> а где я на словах или еще как "на ТSQL PDFs и TIFFы разбираю"
msLex> поздно, теперь не отмоетесь.

Ха! это assmsk вопрошать начал. вот же имячко себе забацал! То ли задница, то ли урна с ошибкой.
А он туда МСК пихает? Змейс! И ни одну xml'ку не показал вражина!
Вот меня и понесло... Пардоньте.

А от грязюки хорошо за борт выкинуть (не забыть привязать).
Пока пароход идёт, не только отстирается, но и отбелится. Возможно с дырками...

Про identy:

Зачем идентити переносить в другую таблицу/базу/сервер? Именно как идентити?
"Дырки" заюзать в PK?
Ну... однажды делал на 2008...
- Убрать identy. Заполнить дырки нужными значениями (типа "dirty" в строковом поле)
- Сделать вьюшку с фильтром по этому "dirty"
- Заполнить записями с нужными PK.
- Восстановить флажок идентити в syscolumns
- Вьюшка в конце концов выродится.
Профит! Как то так.

Кстати, когда alter table делаете, objectid меняется ЕМНИП
20 авг 19, 19:36    [21953767]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Gator
Кстати, когда alter table делаете, objectid меняется ЕМНИП
Если вы про mssql, то память вам весьма изменяет.
20 авг 19, 20:16    [21953791]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Гавриленко Сергей Алексеевич, не изменяет. На 2005/2008 дырки заполнял. Подробности забываются, но помню с objectid, type игрался вот при alter чего-то егоёный id был другой уже. И делал я это не через informationshema,
а сразу в таблице sys...
20 авг 19, 21:35    [21953819]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1973
Gator
Зачем идентити переносить в другую таблицу/базу/сервер? Именно как идентити?
"Дырки" заюзать в PK?

с русским проблемы?
int заканчивался, надо было на bigint переделать.
ПК на этом поле, кластерный.
ибо это единственное уникальное поле.
ну предложите, как еще переделать int на bigint, без переделывания приложения, без простоя, с сохранением кластерного(кучи разводите у себя)
никаких онлайновых create index нет, у меня Standard.
единственный вариант поиметь уже отсортированное это заюзать имеющееся.
ну и как будете поддерживать суррогатный автоинкремент?

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

очередной балабол. наверное, братец Andy OLAP
20 авг 19, 21:37    [21953820]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Yasha123, ну и перезалили бы в новую таблицу с бигинтом сразу, на неё бы всё перевели и дропнули сьарьё с интом.
20 авг 19, 21:43    [21953823]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Yasha123
Member

Откуда:
Сообщений: 1973
Gator
Гавриленко Сергей Алексеевич, не изменяет. На 2005/2008 дырки заполнял. Подробности забываются, но помню с objectid, type игрался вот при alter чего-то егоёный id был другой уже. И делал я это не через informationshema,
а сразу в таблице sys...

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

Откуда:
Сообщений: 1973
Gator
Yasha123, ну и перезалили бы в новую таблицу с бигинтом сразу, на неё бы всё перевели и дропнули сьарьё с интом.

о да блин, это и делаю.
вопрос звучал "зачем идентити тащить в новую таблицу"
20 авг 19, 21:52    [21953831]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Yasha123, перезалил, а потом поставил идентити. Уже на имеющиеся данные нужного размера. А дальше бы работал уже идентити уже в новом диапазоне.
20 авг 19, 21:56    [21953832]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Gator
Yasha123, перезалил, а потом поставил идентити. Уже на имеющиеся данные нужного размера. А дальше бы работал уже идентити уже в новом диапазоне.
Вы про какую сейчас СУБД? В MSSQL нельзя "поставить" identity на существующее поле.
20 авг 19, 22:06    [21953842]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Гавриленко Сергей Алексеевич
Gator
Yasha123, перезалил, а потом поставил идентити. Уже на имеющиеся данные нужного размера. А дальше бы работал уже идентити уже в новом диапазоне.
Вы про какую сейчас СУБД? В MSSQL нельзя "поставить" identity на существующее поле.
Вроде можно, если напрямую покурочить запись в системной таблице и другие записи в других таблицах. Там набор флажков и целостность. Аккуратненько ручками сваять хотелку.
20 авг 19, 22:24    [21953852]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
ОК. Уговорили. В викенд потренируюсь, в понедельник вынесу вердикт.
20 авг 19, 22:27    [21953855]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Gator
Гавриленко Сергей Алексеевич
пропущено...
Вы про какую сейчас СУБД? В MSSQL нельзя "поставить" identity на существующее поле.
Вроде можно, если напрямую покурочить запись в системной таблице и другие записи в других таблицах. Там набор флажков и целостность. Аккуратненько ручками сваять хотелку.
Напрямую? Это в нотепаде редактировать mdf-файл? Или через dbcc writepage?

Сообщение было отредактировано: 20 авг 19, 22:45
20 авг 19, 22:44    [21953866]     Ответить | Цитировать Сообщить модератору
 Re: Ускорение загрузки данных из oracle в mssql  [new]
Gator
Member

Откуда: Москва
Сообщений: 14980
Гавриленко Сергей Алексеевич
пропущено...
Вроде можно, если напрямую покурочить запись в системной таблице и другие записи в других таблицах. Там набор флажков и целостность. Аккуратненько ручками сваять хотелку.
Напрямую? Это в нотепаде редактировать mdf-файл? Или через dbcc writepage?
Беру таймаут дня на три. Савлю старые базы на виртуалку. Вспоминаю, где сидит админский щрифт. Извините.
26 авг 19, 19:15    [21957871]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить