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

Откуда:
Сообщений: 625
1. EXEC ('SELECT TOP 10 * FROM DB1.dbo.T1') AT [LS1];

2. SELECT TOP 10 * FROM LS1.DB1.dbo.T1

3. EXEC LS1.DB1.dbo.sp_executesql 'SELECT TOP 10 * FROM DB1.dbo.T1'


какие из этих вызовов данных с удаленного сервера наиболее оптимальный. С учетом того, что необходимо выполнить более сложный запрос к таблице с кол-вом записей более 500 млн
27 май 15, 07:31    [17693930]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
abort
1. EXEC ('SELECT TOP 10 * FROM DB1.dbo.T1') AT [LS1];

2. SELECT TOP 10 * FROM LS1.DB1.dbo.T1

3. EXEC LS1.DB1.dbo.sp_executesql 'SELECT TOP 10 * FROM DB1.dbo.T1'


какие из этих вызовов данных с удаленного сервера наиболее оптимальный. С учетом того, что необходимо выполнить более сложный запрос к таблице с кол-вом записей более 500 млн


то есть чисто селектом выбрать 500 млн записей и потом юзер будет смотреть на них?
27 май 15, 08:04    [17693981]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
abort
какие из этих вызовов данных с удаленного сервера наиболее оптимальный.

В чем будем мерять оптимальность ?
27 май 15, 09:54    [17694387]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
abort
Member

Откуда:
Сообщений: 625
всего кол0во записей 500 млн, выборка будет возвращать около 25-30 записей. Вопрос на какой сервер ляжет основная часть нагрузки. На удаленном или на вызываемом?
27 май 15, 11:24    [17695012]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
abort
Вопрос на какой сервер ляжет основная часть нагрузки. На удаленном или на вызываемом?

Посмотреть на план выполнения и узнать ?
27 май 15, 11:25    [17695020]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
abort,

Если вы хотите нормально качать огромные объёмы с удалённого сервера, оптимально используя канал и вставку bulkinsert, используйте SSIS DataFlow. Остальное по производительности ничто.
27 май 15, 12:40    [17695499]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
a_voronin

Если вы хотите нормально качать огромные объёмы с удалённого сервера,.


abort
выборка будет возвращать около 25-30 записей
27 май 15, 12:42    [17695512]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
abort
всего кол0во записей 500 млн, выборка будет возвращать около 25-30 записей. Вопрос на какой сервер ляжет основная часть нагрузки. На удаленном или на вызываемом?


А какова суть запроса? Если вы делаете запрос на удалённом сервере и там получаете результат, то естественно нагрузка на нем. Если у вас половина таблиц на удалённом, а половина на локальном и вы все это джойнить собираетесь, вообще лажа будут, положите канал, будете ловить дедлоки и т.п., вот в этом случае лучше dataFlow использовать. Он лучше такие вещи переваривает.
27 май 15, 13:04    [17695632]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Кот Матроскин
a_voronin
Если вы хотите нормально качать огромные объёмы с удалённого сервера,.


abort
выборка будет возвращать около 25-30 записей


Из второго не следует. что не надо прокачивать огромные объёмы. В чём характер запроса?
27 май 15, 13:06    [17695641]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin, может поделитесь тайными знаниями почему:

1. Например, вариант
insert into MyTable with (tablock) exec('Some query') at MyLinkedServer
по производительности "ничто" в сравнении с DataFlow?

2. Почему распределенный запрос приводит к "дедлокам и т.п."? И что такое это самое "т.п."?
27 май 15, 13:23    [17695801]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
invm
a_voronin, может поделитесь тайными знаниями почему:

1. Например, вариант
insert into MyTable with (tablock) exec('Some query') at MyLinkedServer
по производительности "ничто" в сравнении с DataFlow?

2. Почему распределенный запрос приводит к "дедлокам и т.п."? И что такое это самое "т.п."?



Потому что в первом случае под SSIS будет порционный BULK INSERT, а он явно монстрозного стандартного INSERT, который у вас выжрет лог даже на SIMPLE MODEL.
Второе зависит от обстоятельств. Что на транзакции будут в этот момент гулять на источнике. DataFlow заберёт кусок данных сканом и отпустит их, а ваш будет держать транзакцию. А если еще распределённую транзакцию включить.
Третье много зависит от того, что стоит за 'Some query'
27 май 15, 14:05    [17696058]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin
Потому что в первом случае под SSIS будет порционный BULK INSERT, а он явно монстрозного стандартного INSERT, который у вас выжрет лог даже на SIMPLE MODEL.
Читайте матчасть:
https://technet.microsoft.com/en-us/library/ms191244(v=sql.105).aspx
https://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx
a_voronin
DataFlow заберёт кусок данных сканом и отпустит их, а ваш будет держать транзакцию.
И что? Чтобы получить дедлок, нужно иметь конкуренцию за ресурсы. Наличие открытой транзакции не означает, что такая конкуренция имеет место.
a_voronin
Третье много зависит от того, что стоит за 'Some query'
И как это влияет на умопомрачительность производительности DataFlow?
27 май 15, 14:36    [17696226]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
invm
a_voronin
Третье много зависит от того, что стоит за 'Some query'
И как это влияет на умопомрачительность производительности DataFlow?


Это влияет не на производительность DataFlow, а на непроизводительность 'Some query'.

Одно из мест, где DataFlow явно рулит -- это JOIN или MERGE между разными серверами.
27 май 15, 14:42    [17696264]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
invm
a_voronin
Потому что в первом случае под SSIS будет порционный BULK INSERT, а он явно монстрозного стандартного INSERT, который у вас выжрет лог даже на SIMPLE MODEL.
Читайте матчасть:
https://technet.microsoft.com/en-us/library/ms191244(v=sql.105).aspx
https://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx


И какое отношение эти ссылки имеют к LinkedServer-ам и распределённым транзакциям?

Я уже давно развлекаюсь загрузкой массовой загрузкой в партиционированный columnstore, что в общем-то соответствует этим ссылкам с коррекцией на версию сервера. А вы можете дальше развлекаться Linked Server-ами
27 май 15, 14:47    [17696297]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin
Это влияет не на производительность DataFlow, а на непроизводительность 'Some query'.
И каким образом DataFlow может нивелировать непроизводительность 'Some query', а остальные способы не могут?
a_voronin
Одно из мест, где DataFlow явно рулит -- это JOIN или MERGE между разными серверами.
Т.е. SSIS гораздо быстрее соединяет наборы, чем Database Engine? Круто. Какой-нибудь пруф есть?

a_voronin
И какое отношение эти ссылки имеют к LinkedServer-ам и распределённым транзакциям?
Это имеет отношение к
a_voronin
а он явно монстрозного стандартного INSERT, который у вас выжрет лог даже на SIMPLE MODEL.

a_voronin
Я уже давно развлекаюсь загрузкой массовой загрузкой в партиционированный columnstore
Ваши развлечения - ваше личное дело. Не надо их возводить в ранг абсолютной истины.
27 май 15, 15:28    [17696575]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
invm
Т.е. SSIS гораздо быстрее соединяет наборы, чем Database Engine? Круто. Какой-нибудь пруф есть?


database Engine в принципе не может соединять распределённые наборы -- он их скачивает в темп, а уже потом соединяет. А пруфом заниматься не буду
27 май 15, 15:32    [17696609]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin
database Engine в принципе не может соединять распределённые наборы -- он их скачивает в темп, а уже потом соединяет.
А SSIS, типа, не скачивает, а сразу получает нужный результат из астрала, потому что удаленные сервера сами между собой договариваются? И почему сразу в темп?
a_voronin
А пруфом заниматься не буду
Кто-бы сомневался.
27 май 15, 15:43    [17696688]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
database Engine в принципе не может соединять распределённые наборы -- он их скачивает в темп, а уже потом соединяет.

Зато database Engine достаточно умен, чтобы решить, на каком из серверов закачиваемый набор будет меньше по размеру
27 май 15, 16:54    [17697190]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Glory
a_voronin
database Engine в принципе не может соединять распределённые наборы -- он их скачивает в темп, а уже потом соединяет.

Зато database Engine достаточно умен, чтобы решить, на каком из серверов закачиваемый набор будет меньше по размеру



И мораль сей басни такова:

DataFlow непонятно что, потому что мы его не знаем. А LinkedServer рулит, потому что мы знаем про костыль Trace Flag 610
27 май 15, 16:58    [17697209]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
DataFlow непонятно что, потому что мы его не знаем. А LinkedServer рулит, потому что мы знаем про костыль Trace Flag 610

DataFlow оперирует набором в памяти. И набор этот точно так же прокачает через сеть. И еще засвопит, если памяти не хватит.
27 май 15, 17:01    [17697234]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Glory
a_voronin
DataFlow непонятно что, потому что мы его не знаем. А LinkedServer рулит, потому что мы знаем про костыль Trace Flag 610

DataFlow оперирует набором в памяти. И набор этот точно так же прокачает через сеть. И еще засвопит, если памяти не хватит.


Вот мы и упёрлись в то, что DataFlow мы не знаем. Ничего он не свопит, если правильно написать. И в памяти держит только текущий буфер. Загрузил 10000 с одного, 10000 с другого, обработал, записал результат. Загрузил следующие в тот же буфер и так далее.

Кто-то писал здесь dataFlow правильно, кто-то смотрел за расходом памяти при его выполнении? Можно прекрасно 500 лямом прокачать задействовав несколько мегабайт памяти.
27 май 15, 17:22    [17697353]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
Glory
Member

Откуда:
Сообщений: 104760
a_voronin
Вот мы и упёрлись в то, что DataFlow мы не знаем. Ничего он не свопит, если правильно написать. И в памяти держит только текущий буфер. Загрузил 10000 с одного, 10000 с другого, обработал, записал результат. Загрузил следующие в тот же буфер и так далее.

Я такие курсоры писал еще на SQL7
27 май 15, 17:32    [17697416]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin
И в памяти держит только текущий буфер. Загрузил 10000 с одного, 10000 с другого, обработал, записал результат
И как с таким алгоритмом будет работать MERGE?
a_voronin
Можно прекрасно 500 лямом прокачать задействовав несколько мегабайт памяти.
А Database Engine так не умеет?
27 май 15, 17:35    [17697435]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
invm
a_voronin
И в памяти держит только текущий буфер. Загрузил 10000 с одного, 10000 с другого, обработал, записал результат
И как с таким алгоритмом будет работать MERGE?


прекрасно, вам рассказать, что надо сделать, чтобы он не выжирал кучу памяти?
27 май 15, 17:49    [17697505]     Ответить | Цитировать Сообщить модератору
 Re: какой наиболее оптимальный вариант выборки с удаленного сервера  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
a_voronin
прекрасно, вам рассказать, что надо сделать, чтобы он не выжирал кучу памяти?
Вы лучше на поставленный вопрос ответьте.
27 май 15, 17:55    [17697537]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить