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

Откуда: Новосибирск
Сообщений: 37
Суть: нужно в определенную базу залить данные от удаленных серверов.
Выбрана стратегия, что каждый из удаленных серверов сам заливает данные в определенное время. Сервера разбросаны территориально. Связь через открытые каналы связи (инет+vpn).
Теперь сама проблема:
в каждой из баз ведется журнал изменений, после чего в обмене учавствуют именно эти изменения. Эскпорт данных проходит одним батчем: сначала запрос на delete, потом на update и в конце на insert.
Сервера слинкованы: стоят галки на collation compatible, data access, rpc/rpc out, use remote collation.

Сейчас волнует запрос на update (потому как он самый частый).

Запрос типа (выброшены некоторые поля для краткости):
UPDATE [MyLinkServ].[MyBase].[dbo].[MyTbl] SET 
    Fld1 = Als.Fld1,
    Fld2 = Als.Fld2,
    ...
    Fld_n = Als.Fld_n
FROM (
        SELECT 
            Als2.Fld1, 
            Als2.Fld2,
            ...
            Als2.Fld_n
        FROM MyTbl as Als2
        INNER JOIN (SELECT DISTINCT ID FROM CHANGELOG) as tCL ON Als2.ID = tCL.ID
        ) as Als, [MyLinkServ].[MyBase].[dbo].[MyTbl] as LS 
WHERE LS.ID = Als.ID 
Т.е. делаем апдейт на общие поля, у которых совпадают ID и только те, которые были изменены (джойн с таблицей CHANGELOG)

Выполняю запрос, смотрю план выполнения, смотрю профайлер на принимающей стороне и вижу...
План выполнения - самая дорогая операция Remote scan = 76%. Мне сканирование таблице не нужно :-)
Профайлер на принимающей стороне - "select * from MyTbl" , а я не просил делать этот селект и тем более, что на весь кортеж. Потом еще на каждую строку делается свой update через параметры.
Получаю выводы, что сервер (отправитель) получает к себе данные, делает выборки, сотрировки и потом шарашет на удаленный updatы. По практическим опытам: апдейт на 1000 строк (широкая таблица) проходит около 20 сек, но с удаленного сервера на клиента (отправителя) сливается около 30 метров, а заливается всего около 3 метров. Я бы понял если бы наоборот :(
Может сама идея в корне не верна?
24 мар 06, 13:29    [2486306]     Ответить | Цитировать Сообщить модератору
 Re: Линк. сервер, экспорт данных, проблемы с траффиком  [new]
Glory
Member

Откуда:
Сообщений: 104760
UPDATE Ls SET 
    Fld1 = Als.Fld1,
    Fld2 = Als.Fld2,
    ...
    Fld_n = Als.Fld_n
FROM [MyLinkServ].[MyBase].[dbo].[MyTbl] as LS 
INNER JOIN (
        SELECT 
            Als2.Fld1, 
            Als2.Fld2,
            ...
            Als2.Fld_n
        FROM MyTbl as Als2
        INNER JOIN (SELECT DISTINCT ID FROM CHANGELOG) as tCL ON Als2.ID = tCL.ID
        ) as Als ON LS.ID = Als.ID 
24 мар 06, 14:19    [2486614]     Ответить | Цитировать Сообщить модератору
 Re: Линк. сервер, экспорт данных, проблемы с траффиком  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Еще к размышлению.
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=271528
24 мар 06, 14:30    [2486694]     Ответить | Цитировать Сообщить модератору
 Re: Линк. сервер, экспорт данных, проблемы с траффиком  [new]
spock
Member

Откуда: Новосибирск
Сообщений: 37
Так это тоже самое, только через джойн.
Остается проблем прежней - стягивание с удаленного сервера (приемника) на клиента (отправителя) все таблицы, а потом построчный апдейт.
24 мар 06, 14:36    [2486730]     Ответить | Цитировать Сообщить модератору
 Re: Линк. сервер, экспорт данных, проблемы с траффиком  [new]
Glory
Member

Откуда:
Сообщений: 104760
spock
Так это тоже самое, только через джойн.

А вы проверили ?
24 мар 06, 14:39    [2486753]     Ответить | Цитировать Сообщить модератору
 Re: Линк. сервер, экспорт данных, проблемы с траффиком  [new]
spock
Member

Откуда: Новосибирск
Сообщений: 37
Glory
spock
Так это тоже самое, только через джойн.

А вы проверили ?

Проверил. Даже план выполнения практически не изменился, как был Remote scan так и остался (76%).
24 мар 06, 14:41    [2486767]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить