在您的场景中,Polybase 必须连接到外部源中的文件,解压缩它们,然后确保它们适合您的外部表定义(架构),然后允许查询将内容作为目标。当您以一次性导入方式处理大量文本文件时,也没有什么可以真正缓存的,因为它每次都在处理新内容。简而言之,您的方案计算量很大。
Azure Blob 存储(当前)最大速度约为 1,250MB/秒,因此,如果您的吞吐量没有接近最大值,那么提高性能的最佳方法是升级 SQL 数据仓库上的 DWU。在后台,这会将您的工作负载分散到更大的集群(更多服务器)上。SQL 数据仓库 DWU 可以在几分钟内进行放大和缩小。
如果您有大量存储空间并且正在最大化存储空间,请使用多个存储帐户来分散负载。
其他替代方法包括在上传或暂存过程中减轻 Polybase 的解压缩工作。在数据中心内的网络带宽快如闪电的 Azure 中执行此操作。
您还可以考虑使用 Azure 数据工厂来完成这项工作。有关支持的文件格式,请参见此处。支持 GZip。使用复制活动从 Blob 存储复制到 SQL DW。
另请关注:
- CTAS(以选择方式创建表),将数据从外部表移动到 Azure 数据仓库中的内部存储的最快方式。
- 如果要重复查询外部表,请为它们创建统计信息。SQL 数据仓库不会像 SQL Server 那样自动创建统计信息,您需要自己执行此操作。