Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 linked server. непонятное ограничение.  [new]
valv
Member

Откуда:
Сообщений: 118
Добрый день,
вопрос про линкед сервер.
линкед сервер создан на стандартных серверах ms sql server ver 2012/2014/2016, и подлючает базу данных на azure (MS Azure SQL database).
exec sp_addlinkedserver @server = N'AZUREDWH', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'abcsqlsrv.database.windows.net', @catalog=N'dwh'
стандартные сервера должны записывать данные в базу данных на azure через линкед сервер, и это единственная возможность связать сервера.
select из линкед сервера работает приемлимо, но insert работает катастрофически медленно.
причем скорость разная на разных серверах, в зависимости от настороек безопасности и канала.
найден такой путь: вставляем строки небольшими порциями:
while ...
begin
	insert into [AZUREDWH].dwh.stage.patient_diagnoses (a,b,c)
	select top 6 a, b, c from #tb where id > ...
end

на особо медленных серверах наблюдается примерно такая картина:
insert ... select top 5 --работает 4-6 sec
insert ... select top 6 --работает 4-6 sec
insert ... select top 7 --работает 2-3 min (!)
insert ... select top 100 --работает 50 min (!!)
insert ... select top 200 --вылетает через час с ошибкой типа "SMux Provider: Physical connection is not usable [xFFFFFFFF]."
(на каждом сервере по разному, это пример)

между 6 и 7 строками очень существенная разница.
то есть существует какое-то ограничение, по-видимому по размеру передаваемого пакета, связанный именно с линкед сервером либо с azure.
(если вставлять строки через SSIS, на том же сервере все работает очень быстро, без проблем.)

вопрос: кто сталкивался, что это за ограничение такое? как оно называется, чтобы поискать в документации?
спасибо!
4 янв 18, 12:15    [21081420]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
valv
стандартные сервера должны записывать данные в базу данных на azure через линкед сервер, и это единственная возможность связать сервера.
select из линкед сервера работает приемлимо, но insert работает катастрофически медленно.
причем скорость разная на разных серверах, в зависимости от настороек безопасности и канала.

Коллега, на тарифе P11 скорость журнала будет 43 Мбайт/сек. На всех прочих тарифах, например стандартных S, намного меньше.

Сама вставка в облако работает следующим образом. Инстанс в одном ЦОД получает строку, пишет ее в журнал, далее в режиме синхронного Always On пересылает эту строку за океан в другие ЦОД, там записывает в другие инстансы, и только после этого возвращает клиенту сигнал "готов к следующему insert".

Так что низкая скорость вставки в облако - это нормально. Не устраивает - переводите в более дорогой тариф и ждите от нескольких минут до суток, чтобы она выросла.
4 янв 18, 13:39    [21081562]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
valv
вопрос: кто сталкивался, что это за ограничение такое? как оно называется, чтобы поискать в документации?
спасибо!

Еще в марте 2016 обсуждали тут на форуме.
4 янв 18, 13:40    [21081567]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
valv
Member

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

спасибо, в данном случае скорость не критична.
вопрос немного не об этом.
вопрос об оптимальном размере пакета.
пример, который я привел, показывает:
если передавать 200 строк порциями по 4 строки за раз, это займет (200/4)*5sec = 4 min.
если же передавать те же 200 строк порциями по 7 строк, (200/7)*2 min = 56 min.
мне необходимо понять, как рассчитать этот лимит, или что это такое; почему такая неимоверная разница.
4 янв 18, 13:52    [21081587]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
valv
Andy_OLAP,

спасибо, в данном случае скорость не критична.
вопрос немного не об этом.
вопрос об оптимальном размере пакета.
пример, который я привел, показывает:
если передавать 200 строк порциями по 4 строки за раз, это займет (200/4)*5sec = 4 min.
если же передавать те же 200 строк порциями по 7 строк, (200/7)*2 min = 56 min.
мне необходимо понять, как рассчитать этот лимит, или что это такое; почему такая неимоверная разница.

Смотреть нужно в свой тариф и считать по IOPS. А у Вас тариф то вообще какой?

Ну и конечно создавать ВМ в том же регионе. Потому что другие регионы для репликации по факту.
Another thing you could to is create a VM in the same region as your SQL Database and run from there to remove the latency
4 янв 18, 14:01    [21081604]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
valv,

Вот тут в одном из комментариев есть нужные ссылки.
4 янв 18, 14:03    [21081608]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
valv,

И потом - может быть Вам стоит подумать про использование Azure Table storage, если нужно заливать кучу строк в таблицу?
4 янв 18, 14:06    [21081615]     Ответить | Цитировать Сообщить модератору
 Re: linked server. непонятное ограничение.  [new]
valv
Member

Откуда:
Сообщений: 118
Andy_OLAP
Смотреть нужно в свой тариф и считать по IOPS. А у Вас тариф то вообще какой?
тариф "S3". но даже если бы был "basic", предоставляемых DTU хватает вполне.
примерно 20 серверов пару раз в сутки скидывают 1000-1500 строк каждый.
если превратить result set в xml, его размер меньше мегабайта. это вообще ничто.

Andy_OLAP
valv,
Вот тут в одном из комментариев есть нужные ссылки.
ага, спасибо.
похоже у topic starter'а та же проблема, что и у меня.
и ему также советуют то улучшить тариф, то разбить крупные вставки на более мелкие (что он изначально знает).
как расчитать размер пакета, и что за ограничение загадочное, вот в чём вопрос.
4 янв 18, 15:29    [21081753]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить