我们在Azure中有两个虚拟机,第一个使用Ubuntu 18.04和RStudio,第二个使用SQL Server 2017实例。这两个VM均为“ Standard H8m”,在同一Azure订阅中,并且根据Azure建议我们固定了它们的连接。
每个月,我们在R机器中执行某种ETL,这些ETL通过RODBC库和FreeTDS驱动程序连接到SQL Server,并进行一些查询以获取数据。
通常,每个查询花费的时间少于5分钟,并带来约500万行(仅有2列)。但是,本月每个查询的查询量大约增加了5倍,这使得我们的ETL执行无法接受。
查询的计算并不复杂:
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监视器上,我们看不到任何数据库I / O(图形停留在0.1 MB /秒)。这对我们来说很奇怪,因为它必须读取很多行,并且主要是因为我们还记得其他月份,查询在开始的第一秒以大于200MB /秒的速度开始执行查询。
我们相信,本月我们不会对R库或驱动程序进行任何更新或更改。
问题是,SQL Server 2017中是否有任何更改或更新会影响SQL Server计划远程查询的方式?如果不是这样,我们不知道会有什么延迟,所以我们可以接受任何建议。