我正在整理一些简单的分析,以根据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。
如果我碰巧在同一个DWU上运行CTAS语句两次,而没有通过缩放过程,那么第二个&后续执行的速度快了近10倍。
在基于一个表格的过程中寻求帮助,希望暂时保持数据移动/加入等式。
答案 0 :(得分:1)
好问题!当数据移动较少时,Azure SQL数据仓库的体系结构更具性能。我建议按照本文中的步骤确定哪个步骤减慢了进程:https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-manage-monitor/
您的查询可能是串行分析1.7b行中的每个聚合,这并不能最大限度地提高产品的并行性,但最好的方法是找出正在发生的事情on是在上面的链接中查看查询计划等。
对于重复运行的10倍性能,这来自我们系统中的内部缓存。
让我们知道您在查询计划,执行计划等中找到了什么。