У нас есть две виртуальные машины в Azure, первая с Ubuntu 18.04 и RStudio, а вторая с экземпляром SQL Server 2017. Обе виртуальные машины являются «стандартными H8m», находятся в одной подписке Azure, и их подключение закреплено в соответствии с рекомендациями Azure.
Каждый месяц мы выполняем своего рода ETL на нашей машине R, которые подключаются к SQL Server с библиотекой RODBC и драйвером FreeTDS и выполняют некоторые запросы для получения данных.
Обычно каждый запрос занимает <5 минут и приносит около 5 миллионов строк (всего 2 столбца). Тем не менее, в этом месяце запросы принимают примерно в 5 раз больше, что делает недопустимым выполнение ETL. </p>
Запросы не являются вычислительно сложными:
select b.ColumnOne, a.ColumnTwo
from TableOne a, TableTwo b
where b.Date = 201809
and a.TableOrigin = "TableTwo"
TableOne имеет 2000 строк, а TableTwo разделено на столбец «Дата» с 30 датами и 2.000.000.000 строк для каждой.
Когда мы выполняем один из этих запросов в Management Studio, для отображения всех результатов требуется около 10 секунд, поэтому мы предполагаем, что задержка вызвана сетевым подключением, а не вычислительными затратами. Тем не менее, мы не знаем, почему в этом месяце скорость передачи данных так сильно снизилась.
Когда мы выполняем один из этих запросов с R-машины, в ManagementStudio Monitor мы не видим никаких операций ввода-вывода в базе данных (графическая задержка составляет 0,1 МБ / с). Это странно для нас, потому что он должен прочитать много строк и, главным образом, потому что мы помним, что в другие месяцы запрос начинает читать чтение со скоростью> 200 МБ / с в первые секунды.
Мы уверены, что в этом месяце мы не произвели никаких обновлений или изменений в библиотеке или драйвере R.
Таким образом, вопрос в том, были ли какие-либо изменения или обновления в SQL Server 2017, которые могут повлиять на то, как SQL Server планирует удаленные запросы? Если нет, мы не знаем, из-за чего может возникнуть задержка, поэтому мы открыты для любых предложений.