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

Откуда: Ukraine
Сообщений: 9
Доброго времени суток

Передо мной такая задача - организовать обмен данными между двумя серверами MS SQL Server 2000, которые находятся не в локальной сети.
Сразу оговорюсь что опыта у меня уже аж два месяца работы с СКЛ вообще :)...

Подключить сервер получилось без проблем, и канал связи быстрый но запрос типа
Insert into LinkedServer.LinkedDB.dbo.Table1(Field1,Field2)
select Field1,Field2 from LocalServer.DB.dbo.Table1
выполняется со скорость пять(!) записей в секунду. Поэтому вопрос такой: как производится эта передача, почему так медленно? (пробовал с Insert OPENQUERY - не намного быстрее)
сейчас я нашел выход из этой ситуации, а именно записал все поля в ntext с разделителями и передаю только одну запись с полем ntext. выигрыш по скорости - в десятки раз. А может есть более эфективное решение?
27 июн 07, 16:39    [4322188]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
Sehnsucht
Member

Откуда: Ukraine
Сообщений: 9
и еще заметил такую странную закономерность - скорость передачи данных очень зависит от количества записей. может кто обьяснит почему так?
27 июн 07, 16:48    [4322248]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Linked Server: скорость передачи данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
Всем доброго дня!

Я не некрофил, просто поднял тему, дабы не плодить их :) Но проблема та же, что и у ТС.

Вводные данные:
Есть два сервера MS SQL Server 2008R2, территориально разнесены на 1000+ км.
ОС на обеих серверах: Win serv 2008R2.
Есть виртуальная локальная сеть, максимальная пропускная способность 10Мб/с. Сервера связаны через "Linked server", настроена репликация. Сервера добротные, клиенты из реальной локалки тянут с них информацию без вопросов, но вот между собой скорость и 5% не достигает, от пропускной способности канала. Канал при этом пустой и сервера не нагружены... Причем копирование файлов по этому же каналу забивает его на 80%-90%.
Собсно вопрос, который задавал ТС: Где искать "затык", который не дает сиквел-серверам использовать канал, хотя бы, на 50%? :(

Сейчас ищем "затык" в фаерволах, антивирях и настройках сети, но если там все честно, то куда дальше копать? Может есть какие-то ограничения косвенные в настройка ОС или Сиквел-серверов?

Помогите пожалуйста :(
1 окт 13, 10:59    [14905289]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
Ennor Tiegael
Member

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

1. Стянуть удаленные данные локально, и потом в запросе джойнить уже с этой местной временной копией.

2. Попробовать поиграться с правами. Я замечал, что когда логин на удаленном конце имеет членство хотя бы в ddl_admin, это внезапно добавляет резвости распределенным запросам. Для начала, понятно, лучше что-нибудь менее опасное, скажем GRANT VIEW DEFINITION.
1 окт 13, 11:27    [14905519]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
IronNail,

Вопрос про скорость Linked Server или скорость репликации?
1 окт 13, 15:34    [14907676]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
andsm,
Вопрос именно про LinkedServer. Но в рамках репликации :)

Поясню, реплика "слиянием" (стандартная от мелкософт) часто перебрасывает большие объемы по количеству строк в рамках одной таблицы. Сначала заметили пользователи, что большие задержки по времени идут, а после и сами увидели по монитору реплики, что процесс идет, но на некоторых таблицах 100 строк уходят за минуту... А если строк пару десятков тысяч?..
Следующим шагом было сделать апдейт большого количества строк скриптами, по всем колонкам в рамках проблемных таблиц. 500000+ строк собиралось перекидывать около 20 часов, при пустом канале, и отключенных триггерах (разбили на пакеты по 200 строк и после каждого сброса писали в спец табличку, сколько строк сброшено и фиксировали время).

После этого эксперимента вопрос и возник, что твориться с сетью/сервером? И как это исправить?

По сути меня сейчас любые ответы устраивают, да же с самыми бредовыми идеями и не совсем по сути, бо проблему надо решать и решать срочно :( Потому, если есть идеи в рамках реплики и/или LinkedServer, то с радостью прочитаю любые.

Ennor Tiegael ,
1) Так и приходиться делать... Уже есть наработка скриптов и т.п. и пачка терминалок под рукой, что бы сократить время "ручного" переноса. Но это же не выход! Данные обновляются постоянно и приходится держать человека, который половину рабочего времени тратит на монитор "затыков" и перенос данных бекапами...
2) Сделали, не могу сказать, что сильно полегчало и полегчало ли вообще... Все так же канал пуст, а данные тяяяяяяянуться :)
1 окт 13, 15:54    [14907850]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
IronNail
andsm,
Вопрос именно про LinkedServer. Но в рамках репликации :)

Все равно не понятно.
Репликация слиянием линкед сервера практически не использует.
Линкед сервер на дистрибьютор репликация создает, но он при обычной работе репликации вообще не используется.
1 окт 13, 18:51    [14908894]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
Допускаю, что не использует (хотя без них не работает), но это не суть вопроса.

Суть, есть хорошие сервера, которые не нагружены, есть канал шириной 6Мб/с и есть запрос:
select *
into [SubServer].MainBase.dbo.tbl_TempTable
from [MainServer].MainBase.dbo.tbl_TempTable 


Триггера отключены (да и при такой вставке их быть не может), копируется около 600000 записей, скорость копирования 100+ строк в минуту. Вес одной строки в среднем 2.5КБ.

Где искать "заты"? Почему сервер не использует весь доступный канал?

П.С.
Мансы с сетью не дали положительного эффекта. :(
2 окт 13, 11:23    [14911032]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
andy st
Member

Откуда:
Сообщений: 820
IronNail,
Потестил, помониторил. Insert into Удаленный select * from Локальный на удаленном выливается в оооочень неспешные вызовы exec sp_cursor .... для каждой строки

А Insert into Локальный select * from Удаленный c полной загрузкой канала тащит удаленный набор данных через sp_prepexec и массово вставляет его в локальную таблицу.

Видать, такое поведение by design и это надо учитывать при построении систем, т.е. делать вставку в локальные таблицы выбирая с линкованного сервера.
2 окт 13, 12:20    [14911540]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
andy st?

О! Уже интереснее, действительно при "выталкивании" записей на удаленный сервер скорость 100+ записей за минуту, а при "втянивании" удаленным сервером 600+ строк за минуту.
Увеличение скорости в 6 раз уже что-то! Спасибо!

Но канал все равно не используется в полной мере :(
2 окт 13, 13:21    [14911942]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/articles/mssql/2007/051803pushandpullinmicrosoftsqlserverlinkedservers.shtml
2 окт 13, 13:25    [14911976]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
DaniilSeryi
Member

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

была такая проблема со вставкой из одной таблицы базы в другую таблицу этой же базы. 400 тысяч записей вставлялись 6 часов с лишним. Убрал индексы из таблицы-получателя - тот же объём вставился за 6 минут.
2 окт 13, 13:37    [14912079]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
И снова здрасте :)

Переработал все процедуры, что бы данные не "выталкивались", а "втягивались". Перестроил реплику на Merge-Pull.
В итоге стало жить на много легче, но канал все равно пустой.

DaniilSeryi,
убрать индексы, не реально... рабочая база и данные гуляют все время, да же ночью (хоть и в меньшем объеме). :(
9 окт 13, 16:47    [14946338]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server: скорость передачи данных  [new]
Draginsv
Member

Откуда:
Сообщений: 457
При обращении к связанному серверу как к источнику данных у меня скорость выполнения запросов была очень низкая.
При создании запроса к серверу (OPENQUERY), скорость резко возрастала.
М.б. на стороне запроса лучше оперировать данными.
10 окт 13, 10:58    [14949056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить