|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Добрый день. Есть проблема со скоростью работы запроса через 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.
Интересуют варианты уменьшения этой разницы во времени выполнения. При поиске в интернете людей со схожими проблемами видел, а вот с решением как-то хуже. Из статьи на Хабре https://habr.com/ru/post/302958 пробовал варианты с выдачей дополнительных прав у\з, через openquery и exec at - улучшения не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 11:31 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, неплохо-бы драйвер (и его настройки), версия (sql), может там архаичность какая-нибудь с известными (и уже решенными в современных) багами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 11:54 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
vikkiv, Версия MS SQL Server 2017 (14.0.3335.7) на обоих. Поставщик SQL Server Native Client 11.0 Параметры с rpc и два с сортировками пробовал менять без каких-то изменений, вернул к начальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 12:20 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, смотрите, что происходит на удаленном сервере, это может быть не таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:14 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Владислав Колосов, Это таблица, чуть больше миллиона строк. Проблема не только с этим запросом, просто у него простая структура и на его примере удобно смотреть. На удаленном сервере выполняется запрос, с добавлением этих tbl и col, но план выполнения совпадает с планом запроса напрямую. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:40 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, на сервере Б проблемы с tempdb (сортировка)? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:44 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Для начала гляньте план запроса с использованием [linked-server]. Например, при выполнении на сервере A, отдельная операция сортировки может не требоваться, а при запросе через [linked-server] она появляется. Ну если запрос чуть сложнее, чем вы показали (есть что-нибудь из top, where, join и т.п.), причин проблем может быть больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:45 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, Касательно хинта NOLOCK, в видео ниже показано, что он не гарантирует предсказуемого результата ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 13:49 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
komrad, Сервер Б, откуда тянут, вторичная нода для чтения продуктива на AlwaysOn, процов там много, файлов tempdb тоже. Сейчас проблем с работой tempdb не наблюдается. msLex, Этот запрос выполняется в текущем виде. Просто кроме него проблема есть и с другими запросами. Сейчас запустил на Б запрос через linked server и подключившись через ssms к инстансу А - план смотрел сразу на А при выполнении запросов. План был одинаковый, скриншот в теме выложил. А вот срок выполнения опять же в 10+ раз отличается. Хотел статистику запроса посмотреть, но при запуске с показом активной статистики запроса напрямую к инстансу А большую часть времени идёт сортировка и параллелизм, а через linked server идёт вычисление скалярного значения и удаленный запрос, что информации для сравнения мало даёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:07 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
komrad, Там запрос к вторичной ноде кластера AlwaysOn и реально вроде хинт не должен работать, там своя механика. Но коллеги по привычке ставят. Могу без него попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:09 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, А ожидания какие на А при выполнении запроса с Б? Может там просто "сеть тупит" между нодами и у вас вся длительность на обмен данными уходит. упд. ожидания лучше посмотреть на обоих серверах ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:18 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, реплика синхронная или асинхронная? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:19 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion вычисление скалярного значения Какого скалярного выражения? В вашем запросе ничего такого нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:19 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
komrad Danion, реплика синхронная или асинхронная? А как это может влиять на длительность запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:20 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
msLex, С включенным показом статистики у запроса через linked-server показывает во время выполнения удаленный запрос + вычисление скалярного значения. Дождусь окончания выполнения может что изменится. Реплика синхронная, но не думаю, что тут сильно влияет. Ожидания по сети есть, но это 2 ВМ размещенных на одном физическом хосте и относительно невелики. Почему при размещении на разных хостах ожидания по сети уходят в космос - дело другого разбирательства. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:35 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:37 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
komrad ну может на primary меняют таблицу время от времени и на secondary запрос ждет Как на эту проблему влияет синхронность реплик? Синхронность оканчивается синхронной записью операции commit в log реплики. Последующее реду идет идентично. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:40 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
msLex komrad ну может на primary меняют таблицу время от времени и на secondary запрос ждет Как на эту проблему влияет синхронность реплик? Синхронность оканчивается синхронной записью операции commit в log реплики. Последующее реду идет идентично. да, верно, к теме топика тип реплики не относится ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:42 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Долгий вариант завершился, при этом в плане на сервере, где запускалось остались эти удаленные запросы и вычисление скалярного значения. Но у вычисления стоимость 0% стоит, не уверен, что на него нужно обращать внимание. На удаленном сервере, как уже писал, план выполнения был схожий в обоих вариантах. Попробую запустить без сортировки и посмотреть как изменится. Удаление хинта грязного чтения каких-то изменений не вызвало. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 14:50 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion Попробую запустить без сортировки и посмотреть как изменится. в 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:03 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
vikkiv, Похоже SQLNCLI11. При попытке создать linked server с текущим Microsoft OLE DB Driver for SQL Server выдаёт ошибку: Связанный сервер был создан, однако не прошел проверку соединения. Хотя с такими же настройками SQLNCLI11 создаётся. А для установки новой версии запрашивает отключение SQL и агента, может позже попробую. Предлагает обновить текущую версию, не с ноля ставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:32 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion, У медленного актуального плана в свойствах корневого SELECT посморите статистику ожиданий и времени выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:39 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion ..Предлагает обновить текущую версию,.. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:40 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
vikkiv, Прод но не очень критичный, у этой системы нет своего теста, используется для аналитики данных с других серверов. При необходимости тестируют у коллег + бекап виртуалки и БД. Но лучше до сбоя не доводить. Тогда пока трогать не буду. Если есть совет по текущей ошибке создания linked server, то могу попробовать поправить без обновлений. invm, Извиняюсь, не очень понял что смотреть. У селекта в плане вижу информацию по размеру плана в кеше, стоимости операторов и т.д. Но не ожидания, а время выполнения равно времени всего запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 15:59 |
|
Скорость выполнения запроса через linked server
|
|||
---|---|---|---|
#18+
Danion не очень понял что смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 17:48 |
|
|
start [/forum/topic.php?fid=46&fpage=38&tid=1685246]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
104ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 201ms |
0 / 0 |