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

/*
Msg 7411, Level 16, State 1, Line 1
Server '?' is not configured for DATA ACCESS.

exec sp_serveroption @server = @@SERVERNAME ,@optname = 'data access' ,@optvalue = 'TRUE';
*/

set nocount on;
declare @dt datetime, @dif1 int, @dif2 int, @sqlcmd nvarchar(max);
if object_id('tempdb..#netinfo') is not null drop table #netinfo;
create table #netinfo ([local] sysname, [remote] sysname, [val] varchar(max));

-- меряем время
delete from #netinfo;
-- 100 mbyte
set @sqlcmd = N'INSERT INTO #netinfo ([local], [remote], [val]) SELECT [local] = @@SERVERNAME, [remote], [val]
				from OpenQuery ( [' + @@SERVERNAME + N'], ''SET FMTONLY OFF; SET NOCOUNT ON; SELECT [remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100);'' );';
set @dt = getdate();
exec (@sqlcmd);
set @dif1 = DATEDIFF(ms,@dt,getdate());

-- меряем время - всё то же самое минус network
delete from #netinfo;
set @dt = getdate();
INSERT INTO #netinfo ([local], [remote], [val]) SELECT [local]=@@SERVERNAME ,[remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100);
set @dif2 = DATEDIFF(ms,@dt,getdate());

select [srv]=@@SERVERNAME ,[mode]='(local) network speed'
	,[speed (mbit/sec)] = cast(cast( (DATALENGTH([val])*8./1024./1024.*1000/(@dif1-@dif2)) as decimal(10,2)) as sysname)
	,[speed (mbyte/sec)] = cast(cast( (DATALENGTH([val])*1./1024./1024.*1000/(@dif1-@dif2)) as decimal(10,2)) as sysname)
from #netinfo;
1 апр 16, 10:19    [19003687]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Скоросто работы чего ?
Скрипта на удаленном сервере ?
Передачи данных по сети ?
Добавления в таблицу ?
1 апр 16, 10:22    [19003704]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
guest45
Guest
Glory,

в скрипте два insert, с некоторой натяжкой различающиеся только тем, что один из них идёт через remote server.
1 апр 16, 10:26    [19003721]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
guest45
в скрипте два insert, с некоторой натяжкой различающиеся только тем, что один из них идёт через remote server.

Вот мне и интересно - что вы на основе одной команды замеряете то ?
1 апр 16, 10:27    [19003731]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
guest45
Guest
Glory,

по крайней мере можно сказать сколько времени дополнительно тратится на работу через remote server (разница во времени выполнения).

В некотором смысле, это можно интерпретировать, как скорость работы через remote server одной сессии.

Вполне возможно, что запущенные параллельно несколько скриптов покажут приблизительно одинаковое время. Но это и неважно. Как раз интересно то, на какую скорость можно рассчитывать в рамках одной сессии.

P.S.
Чтобы не смущал OPENQUERY, можно его убрать создав linked server [LOCAL]
INSERT INTO #netinfo ([local], [remote], [val]) 
EXEC(N'SELECT [local]=@@SERVERNAME ,[remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100)') AT [LOCAL];
1 апр 16, 10:49    [19003876]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
guest45
по крайней мере можно сказать сколько времени дополнительно тратится на работу через remote server (разница во времени выполнения).

А двойное выполнение скрипта в OpenQuery вы поставили, чтобы эта разница была как можно больше ?

guest45
В некотором смысле, это можно интерпретировать, как скорость работы через remote server одной сессии.

Вы так называете скорость передачи через сеть ?
1 апр 16, 10:58    [19003937]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
guest45
Guest
Glory,

1 многократное выполнение даёт результаты и так и так
set nocount on;
declare @dt datetime, @dif1 int, @dif2 int, @dif3 int, @sqlcmd nvarchar(max);
if object_id('tempdb..#netinfo') is not null drop table #netinfo;
create table #netinfo ([local] sysname, [remote] sysname, [val] varchar(max));

-- меряем время
delete from #netinfo;
-- 100 mbyte
set @dt = getdate();
INSERT INTO #netinfo ([local], [remote], [val]) EXEC(N'SELECT [local]=@@SERVERNAME ,[remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100)') AT [LOCAL];
set @dif1 = DATEDIFF(ms,@dt,getdate());

-- меряем время
delete from #netinfo;
-- 100 mbyte
set @sqlcmd = N'INSERT INTO #netinfo ([local], [remote], [val]) SELECT [local] = @@SERVERNAME, [remote], [val]
	from OpenQuery ( [' + @@SERVERNAME + N'], ''SET FMTONLY OFF; SET NOCOUNT ON; SELECT [remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100);'' );';
set @dt = getdate();
print @sqlcmd
exec (@sqlcmd);
set @dif2 = DATEDIFF(ms,@dt,getdate());

-- меряем время - всё то же самое минус network
delete from #netinfo;
set @dt = getdate();
INSERT INTO #netinfo ([local], [remote], [val]) SELECT [local]=@@SERVERNAME ,[remote]=@@SERVERNAME ,[val] = REPLICATE(cast(REPLICATE(cast(CHAR(55) as varchar(max)),1024) as varchar(max)),1024*100);
set @dif3 = DATEDIFF(ms,@dt,getdate());

select [srv]=@@SERVERNAME ,[mode]='remote server network speed'
	,[LinkedSrv speed (mbyte/sec)] = cast(cast( (DATALENGTH([val])*1./1024./1024.*1000/(@dif1-@dif3)) as decimal(10,2)) as sysname)
	,[OpenQuery speed (mbyte/sec)] = cast(cast( (DATALENGTH([val])*1./1024./1024.*1000/(@dif2-@dif3)) as decimal(10,2)) as sysname)
from #netinfo;


2 Не настаиваю. :) Можно назвать скоростью работы Remote Server.
Если вычисленная таким образом скорость работы по сети/RemoteServer в рамках одной сессии позволит, например, предсказать время работы какого-нибудь запроса, который тащит через remote/linked server N-ное количество image (что в сумме может составлять и MByte, и GByte)
1 апр 16, 11:23    [19004059]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
guest45
1 многократное выполнение даёт результаты и так и так

SET FMTONLY OFF с какой целью использована ?

guest45
2 Не настаиваю. :) Можно назвать скоростью работы Remote Server.

сеть и сервер - это разные вещи. Вы определитесь, что вы измеряете временм выполнения разных команд ?

guest45
Если вычисленная таким образом скорость работы по сети/RemoteServer в рамках одной сессии позволит, например, предсказать время работы какого-нибудь запроса, который тащит через remote/linked server N-ное количество image (что в сумме может составлять и MByte, и GByte)

А как вы узнаете это N до окончания выполнения запроса ?
1 апр 16, 11:27    [19004100]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
guest45
Guest
Glory,

1 привычка. ранее были проблемы

2 Суть в том, чтобы перенаправить силы разработчиков на другие методы прокачки больших объёмов данных.
Для этого нужно показать, что они не вправе расчитывать на 900 mbit на GB LAN.

3 это зависит от бизнес логики.
1 апр 16, 11:47    [19004261]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Владислав Колосов
Member

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

а где Вы вообще видели 900мбит по 1Gb LAN? Связанные серверы вообще не имеют никакого отношения к скорости передачи данных.
Они транспортом не занимаются.
1 апр 16, 11:52    [19004294]     Ответить | Цитировать Сообщить модератору
 Re: скорость работы через linked\remote server ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
guest45
1 привычка. ранее были проблемы

А вы знаете, что она делает ?

guest45
2 Суть в том, чтобы перенаправить силы разработчиков на другие методы прокачки больших объёмов данных.
Для этого нужно показать, что они не вправе расчитывать на 900 mbit на GB LAN.

В смысле направить? В так хотите принудить использовать вместо image какойнибудь filetable ?
Или вы хотите принудить не писать выборки, возвращающие много записей ?

guest45
3 это зависит от бизнес логики.

Не понял. Если вы собралиись строить прогноз времени выполнения запроса, то причем тут бизнес логика ?
1 апр 16, 11:54    [19004304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить