1

我正在整理一些简单的分析,以基于 CTAS 语句对 DWU 对读写的影响进行基准测试。

该查询将 1.7b 行表聚合为 993k 行的表。源表和目的表是轮询分布(源不会长期RR,会移动到HASH)查询大致如下:

create table CTAS_My_DWU_Test 
with (distribution = round_robin) 
as
select TableKey1, TableKey2, 
SumCcolumn=SUM(SalesAmt), 
MaxQuantity=MAX(SalesQty), 
MinQuantity=MIN(SalesQty)
from FactSales
group by TableKey1, TableKey2
option (label='MyDWUTest');

我正在通过 sys.dm_pdw_dms_workers DMV 分析性能,得到 type=DIRECT_READER 和 type=WRITER 的每个分布的平均 bytes_per_second。

我的过程是更改 DWU,删除 CTAS,重新创建它并分析 DMV 中的数据。

当我增加 DWU 时,我没有看到性能的持续改进。我的目标是寻找增加计算的明确证据,但是有时较高的 DWU 会比较小的 DWU 更慢并且返回的 bytes_per_sec 更少。

如果我碰巧在同一个 DWU 上运行 CTAS 语句两次,而不经过缩放过程,那么第二次和后续执行的运行速度会快近 10 倍。

在基于一张表的过程中寻求帮助,暂时不考虑数据移动/连接。

4

1 回答 1

2

好问题!当数据移动较少时,Azure SQL 数据仓库的体系结构性能更高。我建议按照本文中的步骤来确定哪个步骤会减慢进程:https ://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-manage-monitor/

您的查询可能正在分析串行的 1.7b 行上的每个聚合,这并不能最大限度地提高我们产品的并行性,但找出正在发生的事情的最佳方法是查看查询计划等在上面的链接中。

至于重复运行时的 10 倍性能,这来自我们系统中的内部缓存。

让我们知道您在查询计划、执行计划等中发现了什么。

于 2016-09-15T18:57:25.517 回答