powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость выполнения запроса через linked server
25 сообщений из 40, страница 1 из 2
Скорость выполнения запроса через linked server
    #40030748
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть проблема со скоростью работы запроса через linked server между несколькими ms sql серверами. Например сервер А - источник данных, сервер Б - откуда тянут, запускают запрос через linked server. На сервере А запрос выполняется за 2 минуты, на Б если открыть в ssms подключение к А и выполнить, то примерно 3 минуты. А вот если на Б выполнять через имеющийся linked server, то уже 30+ минут.

Запроса вида:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT id, 
   direction_id, 
   order_number, 
   request, 
   response, 
  date_time, 
  status 
FROM [linked-server].DB.dbo.Table  
WITH  
   ( 
      NOLOCK 
   )  
ORDER BY id ASC 


Интересуют варианты уменьшения этой разницы во времени выполнения. При поиске в интернете людей со схожими проблемами видел, а вот с решением как-то хуже.
Из статьи на Хабре https://habr.com/ru/post/302958 пробовал варианты с выдачей дополнительных прав у\з, через openquery и exec at - улучшения не было.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030753
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

неплохо-бы драйвер (и его настройки), версия (sql),
может там архаичность какая-нибудь с известными (и уже решенными в современных) багами.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030762
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

Версия MS SQL Server 2017 (14.0.3335.7) на обоих.
Поставщик SQL Server Native Client 11.0
Параметры с rpc и два с сортировками пробовал менять без каких-то изменений, вернул к начальным.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030782
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

смотрите, что происходит на удаленном сервере, это может быть не таблица.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030797
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Это таблица, чуть больше миллиона строк. Проблема не только с этим запросом, просто у него простая структура и на его примере удобно смотреть.
На удаленном сервере выполняется запрос, с добавлением этих tbl и col, но план выполнения совпадает с планом запроса напрямую.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030799
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

на сервере Б проблемы с tempdb (сортировка)?
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030800
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала гляньте план запроса с использованием [linked-server].

Например, при выполнении на сервере A, отдельная операция сортировки может не требоваться, а при запросе через [linked-server] она появляется.

Ну если запрос чуть сложнее, чем вы показали (есть что-нибудь из top, where, join и т.п.), причин проблем может быть больше.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030801
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

Касательно хинта NOLOCK, в видео ниже показано, что он не гарантирует предсказуемого результата

YouTube Video
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030809
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
Сервер Б, откуда тянут, вторичная нода для чтения продуктива на AlwaysOn, процов там много, файлов tempdb тоже. Сейчас проблем с работой tempdb не наблюдается.

msLex,
Этот запрос выполняется в текущем виде. Просто кроме него проблема есть и с другими запросами.

Сейчас запустил на Б запрос через linked server и подключившись через ssms к инстансу А - план смотрел сразу на А при выполнении запросов. План был одинаковый, скриншот в теме выложил. А вот срок выполнения опять же в 10+ раз отличается.

Хотел статистику запроса посмотреть, но при запуске с показом активной статистики запроса напрямую к инстансу А большую часть времени идёт сортировка и параллелизм, а через linked server идёт вычисление скалярного значения и удаленный запрос, что информации для сравнения мало даёт.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030812
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

Там запрос к вторичной ноде кластера AlwaysOn и реально вроде хинт не должен работать, там своя механика. Но коллеги по привычке ставят. Могу без него попробовать.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030817
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

А ожидания какие на А при выполнении запроса с Б? Может там просто "сеть тупит" между нодами и у вас вся длительность на обмен данными уходит.

упд. ожидания лучше посмотреть на обоих серверах
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030818
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

реплика синхронная или асинхронная?
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030819
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
вычисление скалярного значения

Какого скалярного выражения?

В вашем запросе ничего такого нет.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030820
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
Danion,

реплика синхронная или асинхронная?

А как это может влиять на длительность запроса?
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030829
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,

С включенным показом статистики у запроса через linked-server показывает во время выполнения удаленный запрос + вычисление скалярного значения. Дождусь окончания выполнения может что изменится.

Реплика синхронная, но не думаю, что тут сильно влияет.
Ожидания по сети есть, но это 2 ВМ размещенных на одном физическом хосте и относительно невелики. Почему при размещении на разных хостах ожидания по сети уходят в космос - дело другого разбирательства.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030830
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030834
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
ну может на primary меняют таблицу время от времени и на secondary запрос ждет

Как на эту проблему влияет синхронность реплик?
Синхронность оканчивается синхронной записью операции commit в log реплики. Последующее реду идет идентично.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030835
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
komrad
ну может на primary меняют таблицу время от времени и на secondary запрос ждет

Как на эту проблему влияет синхронность реплик?
Синхронность оканчивается синхронной записью операции commit в log реплики. Последующее реду идет идентично.

да, верно, к теме топика тип реплики не относится
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030840
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долгий вариант завершился, при этом в плане на сервере, где запускалось остались эти удаленные запросы и вычисление скалярного значения. Но у вычисления стоимость 0% стоит, не уверен, что на него нужно обращать внимание.
На удаленном сервере, как уже писал, план выполнения был схожий в обоих вариантах.

Попробую запустить без сортировки и посмотреть как изменится. Удаление хинта грязного чтения каких-то изменений не вызвало.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030847
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
Попробую запустить без сортировки и посмотреть как изменится.
А версия sqlncli какая? 11.0 или 11.1 ?
в connection string что стоит? Provider=SQLNCLI11;... или Provider=SQLNCLI11.1;...

что если с учётом следующего:
--===--
> Important
The SQL Server Native Client (SQLNCLI) remains deprecated and it is not recommended to use it for new development work.
Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

--===--
воспользоваться OLEDB драйвером ?
(который MSOLEDBSQL а не SQLOLEDB)

added:
п.с. последний декабрьский если что версии 18.5
http://docs.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030874
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

Похоже SQLNCLI11.

При попытке создать linked server с текущим Microsoft OLE DB Driver for SQL Server выдаёт ошибку:
Связанный сервер был создан, однако не прошел проверку соединения.
Хотя с такими же настройками SQLNCLI11 создаётся.
А для установки новой версии запрашивает отключение SQL и агента, может позже попробую. Предлагает обновить текущую версию,
не с ноля ставить.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030878
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

У медленного актуального плана в свойствах корневого SELECT посморите статистику ожиданий и времени выполнения.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030879
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
..Предлагает обновить текущую версию,..
просто так уточнить, речь о Dev/Test конечно-же? а то будете потом бегать если что из старого функционала вдруг слетит..
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030880
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

Прод но не очень критичный, у этой системы нет своего теста, используется для аналитики данных с других серверов. При необходимости тестируют у коллег + бекап виртуалки и БД.
Но лучше до сбоя не доводить. Тогда пока трогать не буду. Если есть совет по текущей ошибке создания linked server, то могу попробовать поправить без обновлений.

invm,
Извиняюсь, не очень понял что смотреть.
У селекта в плане вижу информацию по размеру плана в кеше, стоимости операторов и т.д. Но не ожидания, а время выполнения равно времени всего запроса.
...
Рейтинг: 0 / 0
Скорость выполнения запроса через linked server
    #40030918
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость выполнения запроса через linked server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]