【发布时间】:2017-03-13 14:41:49
【问题描述】:
我们正在将一些数据库从运行 SQL Server 的 Azure VM 迁移到 Azure SQL。当前的虚拟机是标准 DS12 v2,连接了两个 1TB SSD。
我们使用的是 P1 性能级别的弹性池。我们在这方面还处于早期阶段,所以池中没有真正运行其他任何东西。
无论如何,我们正在执行一个涉及少量约 20M 行表的 ETL 过程。我们批量加载这些表,然后更新一些属性以帮助完成其余过程。
例如,我目前正在运行以下更新:
UPDATE A
SET A.CompanyId = B.Id
FROM etl.TRANSACTIONS AS A
LEFT OUTER JOIN dbo.Company AS B
ON A.CO_ID = B.ERPCode
TRANSACTIONS 约为 20M 行;公司少于 50 家。
我已经运行此更新 30 分钟,这远远超出了可接受的范围。池上的使用量表徘徊在 40% 左右。 作为参考,我们的 Azure VM 在大约 2 分钟内运行。
我通过批量复制加载此表,此更新已超出加载整个表所需的时间。
关于加快此(和其他)更新的任何建议?
【问题讨论】:
-
您的弹性池是否存在限制——也就是说,您是否限制此数据库使用超过 40% 的 DTU?
-
是的,过程的批量加载部分不是问题。我将在大约 30 分钟内加载整个表格。我让更新在一夜之间完成,运行了五个小时。
-
@DanRediske-MSFT - 不,我没有设置上限。批量加载和其他一些操作能够远高于 40%。我想为我们池中的一些数据库配置限制,但我实际上在门户中找不到设置。
-
好的。我已经联系了其他几位专家,看看我们是否对您的案例有任何见解。您的查询计划是什么样的?