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

Есть проблема со скоростью работы запроса через 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
24.12.2020, 11:54
    #40030753
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость выполнения запроса через linked server
Danion,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Попробую запустить без сортировки и посмотреть как изменится. Удаление хинта грязного чтения каких-то изменений не вызвало.
...
Рейтинг: 0 / 0
24.12.2020, 15:03
    #40030847
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость выполнения запроса через linked server
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
24.12.2020, 15:32
    #40030874
Danion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость выполнения запроса через linked server
vikkiv,

Похоже SQLNCLI11.

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

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

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

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


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