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

Откуда: Саратов
Сообщений: 1213
Всем привет!

есть два одинаковых сервера Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
OS Windows Server 2012 R2

соединены между собой каналом 1 гбит/сек

описаны связанные серверы, при выборке данных с удаленного(связанного) сервера, наблюдаются небольшие задержки, хотя есть выполнять запрос на локальном сервере запрос выполняется моментально без задержек пример запроса
 select * from [srv1].databse.dbo.table1


вопрос: Есть ли какие-нибудь хитрости по настройке связного сервера которые сократят время отклика удаленного(связанного) сервера?
18 июн 15, 14:14    [17787514]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
наблюдаются небольшие задержки,

Где и как наблюдается ?
18 июн 15, 14:18    [17787547]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Glory
Mandarin
наблюдаются небольшие задержки,

Где и как наблюдается ?


srv1 - исходный сервер
srv2 - удаленный (связный) сервер

запрос выполняю на сервере srv1 в SMSS, задержка проявляется в двух местах
1. ожидание выполнение запроса
2. фетч записей

если запрос выполнять на сервере srv2 в SMSS задержка не наблюдается ни в первом ни во втором случаях.
18 июн 15, 14:47    [17787700]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
запрос выполняю на сервере srv1 в SMSS, задержка проявляется в двух местах
1. ожидание выполнение запроса
2. фетч записей

Чем вы измеряете задержку ? И как ?
18 июн 15, 14:48    [17787704]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Владислав Колосов
Member

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

как-то не конкретно... Что значит мгновенно, что значит задержка...
18 июн 15, 14:54    [17787743]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Glory,

Задержку измеряю самым элементарным способом - по времени выполнения запроса, время выполнения запроса показывает SSMS

разница по времени 5-7 секунд, это с учетом того что если выполнять запрос на сервере где лежат данные то время выполнения 0 сек, если запрос делать на удаленном сервере то время выполнения 5-7 секунд.
18 июн 15, 14:55    [17787747]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Mandarin
это с учетом того что если выполнять запрос на сервере где лежат данные то время выполнения 0 сек, если запрос делать на удаленном сервере то время выполнения 5-7 секунд.
Т.е. вас удивляет, что данные с удаленного сервера не передаются мгновенно?
18 июн 15, 15:01    [17787773]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
invm,

да, хотелось бы без задержки
18 июн 15, 16:23    [17788377]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Mandarin,

к примеру если я из приложения написанного на Delphi делаю такой же запрос к удаленному серверу, только не через связанные серверы а так сказать напрямую, т.е. в настройках клиента указываю сервер откуда брать данные, то запрос так же выполняется "мгновенно" в приделах 0-0,5 сек
18 июн 15, 16:27    [17788404]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Mandarin
да, хотелось бы без задержки
Чудес не бывает.
Показывайте текст проблемного запроса и его актуальный план выполнения в формате sqlplan.
18 июн 15, 16:40    [17788481]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
o-o
Guest
Mandarin
из приложения написанного на Delphi делаю такой же запрос к удаленному серверу, только не через связанные серверы а так сказать напрямую, т.е. в настройках клиента указываю сервер откуда брать данные, то запрос так же выполняется "мгновенно" в приделах 0-0,5 сек

и вы это делаете из приложения, написанного на Delphi, под тем же логином,
в к-ого отмапливаетесь при выполнении из студии через linked server?
+ Russian

"при делах" / "не при делах" / "в прEделах"
18 июн 15, 17:01    [17788601]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Владислав Колосов
Member

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

Вы тестовое приложение запускаете на srv2?
18 июн 15, 17:02    [17788608]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
Glory,

Задержку измеряю самым элементарным способом - по времени выполнения запроса, время выполнения запроса показывает SSMS

разница по времени 5-7 секунд, это с учетом того что если выполнять запрос на сервере где лежат данные то время выполнения 0 сек, если запрос делать на удаленном сервере то время выполнения 5-7 секунд.

А как вы измеряете время на установление соединения, время выполнения на удаленном сервере команд(кстати, сколько и какие они), время на передачу результата этих команд ?
18 июн 15, 19:31    [17789445]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Glory,

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

 exeс [linkedserver].database.scheme.sp


этот вариант отлично работает если выборка данных состоит только из данных удаленного сервера, если же данные находятся на разных серверах, то соединить я их могу только так

select t1.f1,t2.f2
from t1
left join [linkedserver].database.scheme.t2


в этом случае задержка есть, можно было бы использовать TV функцию но ее нельзя вызывать удаленно пишет ошибку "Удаленные вызовы функций, возвращающих табличное значение, не допускаются", в openquery динамические параметры нельзя передать.

вопрос: можно ли присоединить данные удаленного сервера к основному запросу так чтобы эти данные обрабатывались на удаленном сервере. аналогично exeс [linkedserver].database.scheme.sp ?
19 июн 15, 13:42    [17792486]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
вопрос: можно ли присоединить данные удаленного сервера к основному запросу так чтобы эти данные обрабатывались на удаленном сервере. аналогично exeс [linkedserver].database.scheme.sp ?

Вы справшиваете, как сделать запрос без установления соединения и передачи данных по сети ?
19 июн 15, 13:44    [17792494]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Так выполните
exeс [linkedserver].database.scheme.sp
в локальную таблицу.
19 июн 15, 13:54    [17792592]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Mandarin
вопрос: можно ли присоединить данные удаленного сервера к основному запросу так чтобы эти данные обрабатывались на удаленном сервере. аналогично exeс [linkedserver].database.scheme.sp ?
Вы же партизаните и не показываете, что вас просят. А волшебных ответов хотите.

Общий ответ - да, можно.
Если в плане Remote Scan, то загружается вся таблица с удаленного сервера.
Если Remote Query, то выполняется запрос на стороне удаленного сервера. Какой именно видно, опять же, в плане.
В ваше случае возможно может помочь переписывание запроса через outer apply.
19 июн 15, 14:21    [17792830]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Владислав Колосов
Так выполните
exeс [linkedserver].database.scheme.sp
в локальную таблицу.


я этот вариант рассматривал. но он мне не подходит т.к. SP без параметров возвращает очень большой набор записей, тащить все записи на локальный сервер нецелесообразно.

вот кусок моего настоящего SQL запроса в котором видно как я присоединяю данные с удаленного сервер

outer apply(
  select sum( 
   case when DATEDIFF(second,m.TimeStart,m.TimeEnd) = 0 then 1
   else DATEDIFF(second,m.TimeStart,m.TimeEnd) end) MotionOnKKM
  from [SQL-3000].Video.dbo.Cams c with (nolock)
  left join [SQL-3000].Video.dbo.Motion m with (nolock) on m.CamID = c.CamID and m.TimeStart between fx.FixTime and ntr.CreateDate
  where c.KKMDeviceID = cl.DeviceID) mKKM


в плане видно что выполняется RemoteQuery.

я не партизаню :) на вопросы как я замеряю время выполнение ответил развернуто и конкретно - смотрю время выполнения запроса в окне SSMS :)
19 июн 15, 14:28    [17792909]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
на вопросы как я замеряю время выполнение ответил развернуто и конкретно - смотрю время выполнения запроса в окне SSMS

Это очень "развернуло" понимание, на что сервер тратит время

Mandarin
я этот вариант рассматривал. но он мне не подходит т.к. SP без параметров возвращает очень большой набор записей, тащить все записи на локальный сервер нецелесообразно.

А таблица на локальном сервере содержит еще больше записей и ее еще нецелсообразнее "заталкивать" на удаленный сервер ?
19 июн 15, 14:30    [17792931]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1213
Glory,

тогда уточните запрос какое время нужно посчитать, я скажу значения которые нужны, или скажите как правильно считать время чтоб ответ был развернутым. таблицу передавать на удаленный сервер тоже не вариант, таблицы достаточно большие.
19 июн 15, 14:34    [17792954]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mandarin
тогда уточните запрос какое время нужно посчитать

Я уже два раза написал
19 июн 15, 14:35    [17792964]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Начальный вопрос выглядел как
select * from [srv1].databse.dbo.table1


По ходу пьесы оказывается, что автор обманывает - сознательно или нет.
19 июн 15, 14:49    [17793076]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
Mandarin
Member

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

скорее не сознательно, зачем мне обманывать когда мне результат нужен.
19 июн 15, 14:52    [17793106]     Ответить | Цитировать Сообщить модератору
 Re: Связанный сервер или как ускорить обмен данными  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Mandarin
я не партизаню :)
Какой смысл тратить на вас время, если ответов не читаете и нужные сведения приходится вытягивать клещами?
19 июн 15, 15:12    [17793236]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить