我正在尝试将外部表中的数据加载到SQL DW内部表。我在BLOB存储中以压缩格式存储数据存储,而外部表指向BLOB存储位置。
我有大约24个文件,大小约为22GB,并尝试使用较大的资源类服务/用户帐户将外部表中的数据加载到300 DWU的内部表中。
我的插入语句(非常简单)运行超过10个小时。 插入Trxdata.Details_data select * from Trxdata.Stage_External_Table_details_data;
我也试过以下声明,那也跑了10多个小时。 CREATE TABLE Trxdata.Details_data12 WITH ( DISTRIBUTION = ROUND_ROBIN ) 如 选择 * 来自Trxdata.Stage_External_Table_details_data ;
我看到 - 两个SQL都在" sys"。" dm_pdw_exec_requests"中运行了ACTIVE状态。 [我在想,它可能是并发插槽问题而且它没有运行并发插槽,但事实并非如此]
我希望,增加/扩大DWU - 可能会提高性能。但是看看portal.azure.com中的DWU用法 - 我不相信增加了DWU,因为DWU使用率图显示过去12小时<50DWU
所以,我试图理解 - 我怎么能找到 - 花了这么长时间,我怎样才能提高数据负载的性能?
答案 0 :(得分:2)
我怀疑你的问题在于被压缩的文件。许多azure文档声明每个压缩文件只能获得一个读取器。作为测试,我建议您解压缩数据并尝试加载,看看解压缩/加载是否比加载您当前看到的压缩数据10小时更快。如果这是您系统的一个选项,我也可以使用多个文件而不是一个大文件。
答案 1 :(得分:1)
请在SQL CAT上查看以下有关数据加载优化的博客。 https://blogs.msdn.microsoft.com/sqlcat/2016/02/06/azure-sql-data-warehouse-loading-patterns-and-strategies/
根据提供的信息,需要考虑的几件事情是:
1)与DW实例相比的blob文件的位置。确保它们位于同一区域。 2)默认情况下,Clustered Columnstore处于启用状态。如果要加载22GB的数据,HEAP加载可能会表现得更好(但不确定行数)。所以:
CREATE TABLE Trxdata.Details_data12
WITH (HEAP, DISTRIBUTION = ROUND_ROBIN)
AS SELECT * FROM Trxdata.Stage_External_Table_details_data ;
如果问题仍然存在,请提交支持请求: https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-get-started-create-support-ticket/
答案 2 :(得分:0)
您提到数据采用压缩格式。数据驻留在多少个压缩文件中?对于压缩文件,当数据分布在许多文件中时,您将获得更多的并行性,从而获得更好的性能。为了获得更好的性能,未压缩文件不需要将数据放在多个文件中,因此测试这是否是性能问题的另一种方法是解压缩文件。