我在AZURE DW中有一个存储过程,运行速度很慢。我将所有表和sp复制到另一台服务器上,执行时间非常短。我在唯一字段上使用HASH分布创建了表,但是sp也运行得非常慢。请建议如何提高AZURE DW中sp的性能。
答案 0 :(得分:1)
根据您的最新评论,数据样本对于SQL DW上的任何合理测试来说都太小了。记住SQL DW是MPP,而本地本地SQL Server是SMP。即使使用DWU100,此MPP体系结构的底层布局也与本地SQL Server非常不同。例如,每个SQL DW都有60个用户数据库为DW供电,数据分布在它们之间。默认存储是群集列存储,它针对常见的DW类型工作负载进行了优化。
当向DW发送查询时,它必须构建一个分布式查询计划,该计划被推送到底层数据库以构建本地计划然后执行并将其运行回堆栈。这似乎很多,它适用于小型数据集和简单查询。但是,当您使用数十亿行处理数百TB的数据并且需要运行复杂的聚合时,这种额外的开销相对较小。从MPP处理能力中获得的好处使得这一点无关紧要。
在实际尺寸上没有硬数字,你会看到真正的收益,但至少半个TB是一个很好的起点,行确实应该是数千万。当然,总有一些边缘情况,您的数据集可能不会很大,但工作量自然会适用于MPP,因此您可能仍然会看到收益,但这并不常见。如果您的数据大小在几十或几百GB范围内并且不会显着增长,那么您Azure SQL Database可能会更加满意。
关于资源类管理,工作负载监控等...请查看以下链接: